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
}