Skip to content

Latest commit

 

History

History
62 lines (48 loc) · 1.42 KB

43.Multiply Strings.md

File metadata and controls

62 lines (48 loc) · 1.42 KB

题目

给定两个用字符串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]))