题目描述:
定给两个以字符串形式表示的非负整数 num1
状语从句: num2
,报道查看 num1
状语从句: num2
的乘积,它们的乘积也表示为字符串形式。
示例1:
输入: num1 =“2”,num2 =“3”
输出: “6”
示例2:
输入: num1 =“123”,num2 =“456”
输出: “56088”
说明:
num1
状语从句:num2
的长度小于110。num1
状语从句:num2
只所有游戏数字0-9
。num1
和num2
均不以零开头,除非是数字0本身。- 不能使用任何标准库的大数类型(比如BigInteger)或直接将输入转换为整数来处理。
def multiply(num1, num2):
re = [0] * (len(num1)+ len(num2))
for i, e1 in enumerate(reversed(num1)):
for j, e2 in enumerate(reversed(num2)):
re[i+j] += int(e1) * int(e2)
re[i+j+1] += re[i+j]//10
re[i+j] = re[i+j]%10
while len(re)>1 and re[-1] == 0:
re.pop()
return ''.join(map(str, re[::-1]))
def multiply(num1, num2):
re = [0]*(len(num1) + len(num2))
tp = len(re) - 1
for i in reversed(num1):
temp = tp
for j in reversed(num2):
re[temp] += int(i) * int(j)
re[temp-1] += re[temp]//10
re[temp] = re[temp]%10
temp -= 1
tp -= 1
index = 0
while index < len(re)-1 and re[index] == 0:
index +=1
return ''.join(map(str, re[index:]))