class Solution:
def multiply(self, num1: str, num2: str) -> str:
#return str(int(num1)*int(num2))
if num1=='0' or num2=='0':
return '0'
m,n = len(num1),len(num2)
res = [0]*(m+n)
for i in range(m-1,-1,-1):
for j in range(n-1,-1,-1):
#计算当前位置相乘
mul = int(num1[i])*int(num2[j])
p1 = i+j
p2 = i+j+1
Sum = mul+res[p2]
res[p2] = Sum%10
res[p1] += Sum//10
#return res
#找到那些未使用的0的位置
i = 0
while i<len(res) and res[i]==0:
i+=1
return ''.join([str(i) for i in res[i:]])
- 字符串与字符串相乘我们可以优化成字符与字符串相乘,然后我们在优化成字符与字符相乘,这是解决程序问题非常重要的一个思想。
- 将庞大的一个问题不断拆分成子问题
- 这里面就是一个多位数的一个乘法问题,在这里我们使用res去存储结果,res的长度不超过两个字符串的长度,并初始化为0
- 使用两个指针不断去游走进行成绩,然后就可以不断更新res中的值,直到指针遍历结束
- 接下来我们要处理初始化中未使用到的0,对他进行阉割
- 然后将int的数组转化未字符串数组,最终转化为字符串