给定两个用字符串num1和num2表示的整数,返回它们相乘的结果。
注意:
- num1和num2的长度均小于110
- num1和num2只包含0-9的数字
- num1和num2不以0开头
- 不能使用内联的BigInteger库,不能上来直接将num1和num2转换为int型
举例:
输入:
'12', '11'
输出:
'132'
这题如果这么做就非常简单:
class Solution(object):
def multiply(self, num1, num2):
"""
:type num1: str
:type num2: str
:rtype: str
"""
return str(int(num1) * int(num2))
可以直接运行,也能出结果,Beats 95%以上。那是因为你没有按照人家要求玩,没意义。
这道题,我们可以使用一个列表,统计它们的计算结果。思路简单,直接上代码看吧。enumerate()很好用啊。
class Solution(object):
def multiply(self, num1, num2):
"""
:type num1: str
:type num2: str
:rtype: str
"""
res = [0] * (len(num1) + len(num2))
for i, e1 in enumerate(reversed(num1)):
for j, e2 in enumerate(reversed(num2)):
res[i+j] += int(e1) * int(e2)
res[i+j+1] += res[i+j] // 10
res[i+j] %= 10
print(res)
while len(res) > 1 and res[-1] == 0:
res.pop()
return ''.join(map(str, res[::-1]))