题解 | #大数乘法#
大数乘法
https://www.nowcoder.com/practice/c4c488d4d40d4c4e9824c3650f7d5571
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param s string字符串 第一个整数
# @param t string字符串 第二个整数
# @return string字符串
#
class Solution:
def solve(self, num1: str, num2: str) -> str:
# write code here
# return int(s)*int(t)
if num1 == "0" or num2 == "0":
return "0"
# 结果数组,最大长度为 len(num1) + len(num2)
result = [0] * (len(num1) + len(num2))
# 反向遍历两个数字字符串
for i in range(len(num1) - 1, -1, -1):
for j in range(len(num2) - 1, -1, -1):
# 计算当前位的乘积
mul = (ord(num1[i]) - ord("0")) * (ord(num2[j]) - ord("0"))
# 计算当前位的索引
p1 = i + j
p2 = i + j + 1
# 加上乘积到结果数组
total = mul + result[p2]
result[p2] = total % 10 # 当前位
result[p1] += total // 10 # 进位
# 将结果转换为字符串
result_str = "".join(map(str, result))
# 去掉前导零
return result_str.lstrip("0")
查看28道真题和解析