• 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



  • 相关阅读:
    GridView自定义分页
    intro
    ListView和DataPager初试
    在DataGrid中,如何录入数量及单价的时候自动算出金额
    常用正则表达式
    ASP.NET中基类页的设计和使用
    Asp.net实现无刷新检测用户名
    在asp.net2.0中使用存储过程
    .NET中的抽象工厂
    用C#生成随机中文汉字验证码的基本原理 [转]
  • 原文地址:https://www.cnblogs.com/ChevisZhang/p/12240154.html
Copyright © 2020-2023  润新知