题解 | #大数乘法#
大数乘法
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")