-
Given two non-negative integers
num1
andnum2
represented as strings, return the product ofnum1
andnum2
, also represented as a string.Example 1:
Input: num1 = "2", num2 = "3" Output: "6"
Example 2:
Input: num1 = "123", num2 = "456" Output: "56088"
Note:
- The length of both
num1
andnum2
is < 110. - Both
num1
andnum2
contain only digits0-9
. - Both
num1
andnum2
do not contain any leading zero, except the number 0 itself. - You must not use any built-in BigInteger library or convert the inputs to integer directly.
- The length of both
Tags: Math, String
题意是让你计算两个非负字符串的乘积
我们模拟小学数学的方式来做,一位一位模拟计算,再各位累加。下面是一位大佬给的图
func multiply(num1 string, num2 string) string {
pos := make([]int64, len(num1)+len(num2))
ans := ""
for i := len(num1) - 1; i >= 0; i-- {
for j := len(num2) - 1; j >= 0; j-- {
mul := (num1[i] - '0') * (num2[j] - '0')
p1, p2 := i+j, i+j+1
sum := int64(mul) + pos[p2]
pos[p1] += sum / 10
pos[p2] = sum % 10
}
}
for _, v := range pos {
ans += strconv.Itoa(int(v))
}
ans = strings.TrimLeft(ans,"0")
if len(ans) == 0 {
return "0"
}
return ans
}
思路2 ```go
```
如果你同我一样热爱数据结构、算法、LeetCode,可以关注我 GitHub 上的 LeetCode 题解:awesome-golang-algorithm