可以使用模拟竖式乘法的方法来实现这个功能。以下是 Python 代码实现:
def multiply(num1: str, num2: str) -> str:
if num1 == "0" or num2 == "0":
return "0"
len1, len2 = len(num1), len(num2)
result = [0] * (len1 + len2)
for i in range(len1 - 1, -1, -1):
for j in range(len2 - 1, -1, -1):
mul = (ord(num1[i]) - ord('0')) * (ord(num2[j]) - ord('0'))
pos1, pos2 = i + j, i + j + 1
total = mul + result[pos2]
result[pos2] = total % 10
result[pos1] += total // 10
result_str = ''.join(map(str, result))
return result_str.lstrip('0')
代码解释:
- 特殊情况处理:如果
num1
或num2
其中一个是"0"
,直接返回"0"
。 - 初始化数组:创建一个
result
数组,长度为len(num1) + len(num2)
,用来存储计算结果。 - 模拟竖式乘法:
- 从
num1
和num2
的末尾开始逐位相乘,计算乘积mul
。 - 计算该乘积应当存放的位置
pos1
和pos2
。 - 进行进位处理。
- 从
- 去除前导零:最终转换成字符串,并去掉可能的前导零。
这样,我们就能正确计算两个字符串表示的非负整数的乘积。