Leecode(176)43.字符串相乘-中等

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

注意:不能使用任何内置的 BigInteger 库或直接将输入转换为整数。

示例 1:

输入: num1 = "2", num2 = "3"
输出: "6"

示例 2:

输入: num1 = "123", num2 = "456"
输出: "56088"

 43. 字符串相乘 - 力扣(LeetCode)

class Solution:
    def multiply(self, num1: str, num2: str) -> str:
        if num1=="0" or num2=='0':
            return "0"
        len1,len2=len(num1),len(num2)
        #创建一个数组来保存
        products=[0]*(len1+len2)

        #反向遍历num1和num2,进行逐位乘法
        for i in range(len1-1,-1,-1):
            for j in range(len2-1,-1,-1):
                 # 计算当前位置的乘积
                mul = (ord(num1[i]) - ord('0')) * (ord(num2[j]) - ord('0'))
                p1,p2=i+j,i+j+1
                sum_=mul+products[p2]

                #更新products数组
                products[p2]=sum_%10
                products[p1]+=sum_//10
        # 处理结果数组,去掉前导零
        result=''.join(map(str,products))
        return result.lstrip('0') if result.lstrip('0') else "0"

        
                


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值