zoukankan      html  css  js  c++  java
  • 43. 字符串相乘

    给定两个以字符串形式表示的非负整数 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



  • 相关阅读:
    解决HTML乱码
    <img> 标签的 src 属性
    tomcat 启动报错 解决办法 A child container failed during&nbsp
    SpringMVC拦截器(资源和权限管理)
    Java实现文件上传-按钮弹出上传页面
    Socket规划中的局域网内测试
    iOS pragma mark要使用
    dwz 照片回头处理
    图像显示和逐渐消失
    讲座:采用Store检查邮件(1)
  • 原文地址:https://www.cnblogs.com/ChevisZhang/p/12240154.html
Copyright © 2011-2022 走看看