给定两个以字符串形式表示的非负整数 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)或直接将输入转换为整数来处理。
既然不能直接将输入转化为int,那我把输入的每一位转化为int,考虑笔算乘法的算法,注意*10就好了
1 2 3
* 4 5
---------
1 5
1 0
0 5
---------
0 6 1 5
1 2
0 8
0 4
---------
0 5 5 3 5
排名38.11%
n1=[]
n2=[]
for i in num1[::-1]: #倒着把num每一位转化为int并加入到列表中
n1.append(int(i))
for i in num2[::-1]:
n2.append(int(i))
ans=0
for i in range(len(n1)):
for j in range(len(n2)): #遍历两个n
if (i + j)==0: #设置系数
k=1
else:
k=int('1'+(i+j)*'0') #如果i+j=2,k=100
ans=ans+(n1[i]*n2[j])*k
return str(ans)