给定2个以字符串形式表示的非负整数num1和num2,返回numl1和num2的乘积,他们的乘积也表示为字符串形式,要求
时间: 2023-11-13 17:07:47 浏览: 174
实现高精度乘法。
例如,输入: num1 = "123", num2 = "45",输出: "5535"。
以下是Python实现的代码:
```python
def multiply(num1: str, num2: str) -> str:
n1, n2 = len(num1), len(num2)
if n1 == 0 or n2 == 0:
return "0"
res = [0] * (n1 + n2)
i_n1 = 0
i_n2 = 0
for i in range(n1 - 1, -1, -1):
carry = 0
n1 = ord(num1[i]) - 48
i_n2 = 0
for j in range(n2 - 1, -1, -1):
n2 = ord(num2[j]) - 48
summ = n1 * n2 + res[i_n1 + i_n2] + carry
carry = summ // 10
res[i_n1 + i_n2] = summ % 10
i_n2 += 1
if carry > 0:
res[i_n1 + i_n2] += carry
i_n1 += 1
i = len(res) - 1
while i >= 0 and res[i] == 0:
i -= 1
if i == -1:
return "0"
s = ""
while i >= 0:
s += str(res[i])
i -= 1
return s
```
该算法的时间复杂度为$O(mn)$,其中$m$和$n$分别为两个字符串的长度。
阅读全文