golang版本
func multiply(num1 string, num2 string) string {
if num1 == "0" || num2 == "0" {
return "0"
}
if num1 == "1" {
return num2
}
if num2 == "1" {
return num1
}
if len(num1) > len(num2) {
tmp := num1
num1 = num2
num2 = tmp
}
l1 := len(num1)
l2 := len(num2)
res := make([]byte, l1+l2)
for i := range res {
res[i] = '0'
}
for i := l1 - 1; i >= 0; i-- {
carry := 0
for j := l2 - 1; j >= 0; j-- {
t := int(res[i+j+1]-'0') + int(num1[i]-'0')*int(num2[j]-'0') + carry
carry = t / 10
res[i+j+1] = byte(t%10) + '0'
}
res[i] += byte(carry)
}
if res[0] == '0' {
res = res[1:]
}
return string(res)
}