码迷,mamicode.com
首页 > 其他好文 > 详细

43. 字符串相乘

时间:2020-01-29 14:03:35      阅读:67      评论:0      收藏:0      [点我收藏+]

标签:形式   solution   add   turn   ase   while   整数   注意   print   

给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。

 

本题自己乱写,在第277/311 个测试case的时候超时了, GG。

 

要注意的地方就是在写两数相加的函数的时候,要注意,最后一位的相加如果进位了,要注意加上去,不然就会像我一样得到:

  123 + 900 = ‘023’

 

class Solution:
    def multiply(self, num1: str, num2: str) -> str:
        def add(num1,num2):
            print(num1,num2)
            l1,l2 = len(num1)-1,len(num2) - 1
            carry = 0
            res = ‘‘
            while l1>=0 or l2>=0:
                s1 = int(num1[l1]) if l1 >=0 else 0 
                s2 = int(num2[l2]) if l2 >=0 else 0 
                tmp = s1 + s2 + carry
                
                carry = tmp // 10  

                res = str(tmp % 10) + res
                l1 -= 1
                l2 -= 1
            if carry == 1:
                res = str(carry) + res
            return res
        
        if num1 == ‘0‘ or num2 == ‘0‘:
            return ‘0‘
        res = ‘‘
        l1,l2 = len(num1) - 1, len(num2) -1
        ex_multiplier = 1
        for i in range(l2,-1,-1):
            curRes = ‘‘
            multiplier = 1
            for j in range(l1,-1,-1):
                tmp = int(num1[j]) * int(num2[i]) *multiplier * ex_multiplier
                curRes = add(curRes,str(tmp))
                multiplier *= 10
            ex_multiplier *= 10
            res = add(res,curRes)
            
        return res



 

43. 字符串相乘

标签:形式   solution   add   turn   ase   while   整数   注意   print   

原文地址:https://www.cnblogs.com/ChevisZhang/p/12240154.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!