leetcode--43. 字符串相乘

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Hilavergil/article/details/79966213

题目:43. 字符串相乘

链接:https://leetcode-cn.com/problems/multiply-strings/description/

模拟大整数乘法,给定的两个乘数为字符串格式。

python:

def myMulti(num1,num2):
    if num2[0]=="0" or num1[0]=="0":
        return "0"
    res,add="",0
    for i in range(len(num1)-1,-1,-1):
        temp=int(num1[i])*int(num2)+add
        res+=(str)(temp%10)
        add=temp//10
        # num1.pop(-1)
    if add!=0:
        res+=(str)(add)
    return res[::-1]


def myAdd(num1,num2):
    if num1[0]=="0":
        return str(num2)
    if num2[0]=="0":
        return str(num1)
    res,add="",0
    i,j=len(num1)-1,len(num2)-1
    while i>=0 and j>=0:
        temp=int(num1[i])+int(num2[j])+add
        res+=(str)(temp%10)
        add=temp//10
        i-=1
        j-=1
    while i>=0:
        temp=int(num1[i])+add
        res+=(str)(temp%10)
        add=temp//10
        i-=1
    while j>=0:
        temp=int(num2[j])+add
        res+=str(temp%10)
        add=temp//10
        j-=1
    if add:
        res+=(str)(add)
    return res[::-1]
class Solution:
    def multiply(self, num1, num2):
        """
        :type num1: str
        :type num2: str
        :rtype: str
        """
        if num2[0] == "0" or num1[0] == "0":
            return "0"
        num2=list(num2)
        res,last,offset="","0",0
        while num2:
            res=str(myMulti(num1, num2[-1]))
            for i in range(offset):
                res+="0"
            res=str(myAdd(str(res),str(last)))
            offset+=1
            last=res
            num2.pop(-1)
        return res

猜你喜欢

转载自blog.csdn.net/Hilavergil/article/details/79966213