43. 字符串相乘

给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。

 

本题自己乱写,在第277/311 个测试case的时候超时了, GG。

 

要注意的地方就是在写两数相加的函数的时候,要注意,最后一位的相加如果进位了,要注意加上去,不然就会像我一样得到:

  123 + 900 = ‘023’

 

class Solution:     def multiply(self, num1: str, num2: str) -> str:         def add(num1,num2):             print(num1,num2)             l1,l2 = len(num1)-1,len(num2) - 1             carry = 0             res = ''             while l1>=0 or l2>=0:                 s1 = int(num1[l1]) if l1 >=0 else 0                  s2 = int(num2[l2]) if l2 >=0 else 0                  tmp = s1 + s2 + carry                                  carry = tmp // 10  
                res = str(tmp % 10) + res                 l1 -= 1                 l2 -= 1             if carry == 1:                 res = str(carry) + res             return res                  if num1 == '0' or num2 == '0':             return '0'         res = ''         l1,l2 = len(num1) - 1, len(num2) -1         ex_multiplier = 1         for i in range(l2,-1,-1):             curRes = ''             multiplier = 1             for j in range(l1,-1,-1):                 tmp = int(num1[j]) * int(num2[i]) *multiplier * ex_multiplier                 curRes = add(curRes,str(tmp))                 multiplier *= 10             ex_multiplier *= 10             res = add(res,curRes)                      return res


 

上一篇:nginx配置反向代理


下一篇:【LeetCode】43.字符串相乘--Python