go + 数组
以 123 * 456 为例
输入: num1 = "123", num2 = "456" 输出: "56088"
参考 leetcode
https://leetcode-cn.com/problems/multiply-strings/solution/zi-fu-chuan-xiang-cheng-by-leetcode-solution/
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * @param s string字符串 第一个整数 * @param t string字符串 第二个整数 * @return string字符串 */ func solve( s string , t string ) string { // write code here if s == "0" || t == "0" { return "0" } // 两数相乘,最大长度为 m+n m, n := len(s), len(t) arr := make([]int, m+n) for i:=m-1; i>=0; i--{ n1 := int(s[i]-'0') for j:=n-1; j>=0; j--{ n2 := int(t[j]-'0') // m的第i位乘以n的第j位,位于最终数组的j+j+1的位置 // 理解这里很重要。i+j+1 可能是一个大于10的数字 // 因为这里存储的是乘积,没向前进位 arr[i+j+1] += n1*n2 } } // 处理进位,i的进位位置在i-1位置 for i:= len(arr)-1; i>0; i--{ arr[i-1] += arr[i]/10 arr[i] = arr[i]%10 } // 如果第0位为0,则需要处理 inx := 0 if arr[0] == 0 { inx =1 } res := "" for i:= inx; i<len(arr); i++{ res += strconv.Itoa(arr[i]) } return res }