给定两个以字符串形式表示的非负整数 num1
和 num2
,返回 num1
和 num2
的乘积,它们的乘积也表示为字符串形式。
注意:不能使用任何内置的 BigInteger 库或直接将输入转换为整数。
示例 1:
输入: num1 = "2", num2 = "3" 输出: "6"
示例 2:
输入: num1 = "123", num2 = "456" 输出: "56088"
class Solution:
def multiply(self, num1: str, num2: str) -> str:
if num1=="0" or num2=='0':
return "0"
len1,len2=len(num1),len(num2)
#创建一个数组来保存
products=[0]*(len1+len2)
#反向遍历num1和num2,进行逐位乘法
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'))
p1,p2=i+j,i+j+1
sum_=mul+products[p2]
#更新products数组
products[p2]=sum_%10
products[p1]+=sum_//10
# 处理结果数组,去掉前导零
result=''.join(map(str,products))
return result.lstrip('0') if result.lstrip('0') else "0"