43. Multiply Strings

数字长度最大可能到110位,不让直接 convert str into int,那就只能位操作了。思路和Q2的竖式加法有点共通,这边是用代码实现竖式乘法。

这个写法虽然submit了,但实现得也不是非常彻底,第14行本身就可以拓展写成一个Q2出来,这边偷懒了。

2. Add Two Numbers
class 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?