43. 字符串相乘
题目描述
给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。
示例
输入: num1 = “2”, num2 = “3”
输出: “6”
思路
大数相乘,其实就是模拟乘法运算。先乘,最后进位。
代码
class Solution:
def multiply(self, num1: str, num2: str) -> str:
if num1 == '0' or num2 == '0':
return '0'
num1 = list(map(int, num1))
num1 = num1[::-1]
num2 = list(map(int ,num2))
num2 = num2[::-1]
res = []
for i in range(len(num2)):
tmp = [0 for c in range(len(num1))]
for j in range(len(num1)):
tmp[j] = num1[j] * num2[i]
if res == []:
res = tmp
else:
tmp = [0 for c in range(i)] + tmp
res = res + [0]
#print(res, tmp)
for k in range(len(res)):
res[k] = res[k] + tmp[k]
#print(res)
p = ''
for i in range(len(res) -1):
res[i + 1] += res[i] //10
p += str(res[i] % 10)
p1 = str(res[-1])
p += p1[::-1]
return p[::-1]
题目来源
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/multiply-strings
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。