leetcode43. Multiply Strings

python3:

class Solution:
    def multiply(self, num1, num2):
        """
        :type num1: str
        :type num2: str
        :rtype: str
        """
        carry=0
        sum1=''
        num1 = num1[::-1]
        num2 = num2[::-1]
        arr = [0 for i in range(len(num1)+len(num2))]
        for i in range(len(num1)):
            for j in range(len(num2)):
                arr[i+j] = arr[i+j] + int(num1[i])*int(num2[j])
        for i in range(len(arr)):
            number = int((arr[i]+carry)%10)  #当前位
            carry = (arr[i]+carry)/10  #进位
            sum1 = str(number)+sum1
        while (sum1[0]=='0' and len(sum1)>=2):
            sum1=sum1[1:]
        return sum1

借鉴这里 https://blog.csdn.net/xiaoling_000666/article/details/80427322#commentsedit 不过原博主写错了,少了一个int(),结果是错的,特此更正。

总结:

  • 创建一个全零列表:arr = [0 for i in range(len(num1)+len(num2))]
  • 字符串的 a+b和b+a不是一回事,一定要注意,比如说sum1 = str(number)+sum1sum1 = sum1+str(number)意义是不一样的,前者表示在sum前面添加,后者表示在sum后面添加。

猜你喜欢

转载自blog.csdn.net/aaon22357/article/details/83382086
今日推荐