# string- 43. Multiply Strings

1. Multiply Strings

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.

go：

``````func multiply(num1 string, num2 string) string {
size1 := len(num1)
size2 := len(num2)
var res = make([]byte, size1 + size2)

// multi
for i := size2 - 1; i >= 0; i-- {
for j := size1 - 1; j >= 0; j-- {
product := (num1[j] - '0' ) * (num2[i] - '0')

sum := res[i+j+1] + product

res[i+j+1] = sum % 10
res[i+j] += (sum/10)
}
}

// remove front zero
var start = 0
for start < len(res) && res[start] == 0 {
start++
}
if start == len(res) {
return "0"
}

// convert to string
for i := range res {
res[i] += '0'
}

return string(res[start:])
}

``````

Nothing just happens, it's all part of a plan.