代码仓库:Github | Leetcode solutions @doubleZ0108 from Peking University.
- 解法1(T28% S77%):第一次做大数乘法,才意识到好久没有扒拉手指头数数了,本质相当于num2的每一位去乘num1,然后再根据第几位乘以10的幂次,最后求和
- 按理说最后的求和也应该直接用字符串做,但字符串加法已经做过了就当已经写完了
class Solution:
def multiply(self, num1: str, num2: str) -> str:
num1, num2 = num1[::-1], num2[::-1]
multis = []
for b in num2:
bonus = 0
tmp = ""
for a in num1:
tmp += str((int(a)*int(b)+bonus) % 10)
bonus = (int(a)*int(b)+bonus) // 10
if bonus > 0:
tmp += str(bonus)
multis.append(int(tmp[::-1]))
res = 0
for idx, num in enumerate(multis):
res += num * 10**idx
return str(res)
该文章介绍了一个使用Python解决大数乘法问题的解法,通过将数字反转,逐位相乘并累加,然后利用10的幂次进行位置调整,最终合并结果。代码中,作者首先将输入的数字字符串反转,然后对第二个数字的每一位与第一个数字进行逐位乘法运算,处理进位,并将结果存储在列表中,最后将列表中的结果按位置相加得到最终的乘积。

被折叠的 条评论
为什么被折叠?



