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



  • 相关阅读:
    nginx日志格式
    nginx默认虚拟主机
    php各种编译错误汇总
    php.ini中最好禁止的一些函数
    php常用的操作
    快速扫描某个服务器上所有开放端口
    LOJ6303:水题——题解
    BZOJ5323 & 洛谷4562:[JXOI2018]游戏——题解
    BZOJ5333:[SDOI2018]荣誉称号——题解
    LOJ2587:[APIO2018]铁人两项——题解
  • 原文地址:https://www.cnblogs.com/ChevisZhang/p/12240154.html
Copyright © 2011-2022 走看看