43. Multiply Strings
数字长度最大可能到110位,不让直接 convert str into int,那就只能位操作了。思路和Q2的竖式加法有点共通,这边是用代码实现竖式乘法。
这个写法虽然submit了,但实现得也不是非常彻底,第14行本身就可以拓展写成一个Q2出来,这边偷懒了。
2. Add Two Numbersclass Solution:
def multiply(self, num1: str, num2: str) -> str:
res = 0
for i in range(len(num1)-1, -1, -1):
# 竖式这一层的结果 / 进位记录
step, patch = '', 0
for j in range(len(num2)-1, -1, -1):
sumval = int(num1[i]) * int(num2[j]) + patch # 记得加上进位
step += str(sumval%10)
patch = sumval//10
# 乘完了还有进位的话得再加进去
if patch: step += str(patch)
# 每层都要多乘一个10
res += int(step[::-1])*(10**(len(num1)-1-i))
return str(res)
Last updated
Was this helpful?