43. Multiply Strings

Description

1. Given two non-negative integers `num1` and `num2` represented as strings, return the product of `num1` and `num2`, also represented as a string.

Example 1:

``````Input: num1 = "2", num2 = "3"
Output: "6"
``````

Example 2:

``````Input: num1 = "123", num2 = "456"
Output: "56088"
``````

Note:

1. The length of both `num1` and `num2` is < 110.
2. Both `num1` and `num2` contain only digits `0-9`.
3. Both `num1` and `num2` do not contain any leading zero, except the number 0 itself.
4. You must not use any built-in BigInteger library or convert the inputs to integer directly.

Tags: Math, String

题解

思路1

``````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
}
``````

```