43. Multiply Strings
🟧 Medium
Given two non-negative integers num1
and num2
represented as strings, return the product of num1
and num2
, also represented as a string.
Note: You must not use any built-in BigInteger library or convert the inputs to integer directly.
Example 1
Input: num1 = "2", num2 = "3" Output: "6"
Example 2
Input: num1 = "123", num2 = "456" Output: "56088"
Constraints
1 <= num1.length, num2.length <= 200
num1
andnum2
consist of digits only.Both
num1
andnum2
do not contain any leading zero, except the number 0 itself.
Solution
My Solution
func multiply(num1 string, num2 string) string {
if num1 == "0" || num2 == "0" {
return "0"
}
l1, l2 := len(num1), len(num2)
bytes := make([]byte, l1+l2)
for i := l1 - 1; i >= 0; i-- {
for j := l2 - 1; j >= 0; j-- {
v := (num1[i]-'0')*(num2[j]-'0')
bytes[i+j+1] += v
if bytes[i+j+1] >= 10 {
bytes[i+j] += bytes[i+j+1]/10
bytes[i+j+1] %= 10
}
}
}
for bytes[0] == 0 {
bytes = bytes[1:]
}
for i := range bytes {
bytes[i] += '0'
}
return string(bytes)
}

Leetcode: link
Last updated
Was this helpful?