Leetcode做题日记:43. 字符串相乘(PYTHON)

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

示例 1:

输入: num1 = “2”, num2 = “3”
输出: “6”

示例 2:

输入: num1 = “123”, num2 = “456”
输出: “56088”

说明:

num1 和 num2 的长度小于110。
num1 和 num2 只包含数字 0-9。
num1 和 num2 均不以零开头,除非是数字 0 本身。
不能使用任何标准库的大数类型(比如 BigInteger)或直接将输入转换为整数来处理。

既然不能直接将输入转化为int,那我把输入的每一位转化为int,考虑笔算乘法的算法,注意*10就好了

                    1 2 3
                *     4 5
                ---------
                      1 5
                    1 0
                  0 5
                ---------
                  0 6 1 5
                    1 2
                  0 8
                0 4
                ---------
                0 5 5 3 5

排名38.11%

	n1=[]
        n2=[]
        for i in num1[::-1]: #倒着把num每一位转化为int并加入到列表中
            n1.append(int(i))
        for i in num2[::-1]:
            n2.append(int(i))   
        
        ans=0    
        for i in range(len(n1)):
            for j in range(len(n2)): #遍历两个n
                if (i + j)==0: #设置系数
                    k=1
                else:
                    k=int('1'+(i+j)*'0') #如果i+j=2,k=100
                ans=ans+(n1[i]*n2[j])*k
        return str(ans)

猜你喜欢

转载自blog.csdn.net/weixin_44033136/article/details/85779510
今日推荐