给定两个以字符串形式表示的非负整数 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