LeteCode刷题:415. 字符串相加

本文介绍了一种不使用内置BigInteger库或直接转换字符串为整数的方法来计算两个非负整数字符串形式的和。通过逐位相加并处理进位,实现了高效的算法,Python实现版本在提交中表现优异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。

注意:

num1 和num2 的长度都小于 5100.
num1 和num2 都只包含数字 0-9.
num1 和num2 都不包含任何前导零。
你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-strings
这道题和这道:二进制求和 的基本做法是一样的,但是我发现在python里面 把 if else 判断表达式语句代替if条件判断语句,运行效率会高一些,原来的速度打败71%,更改了之后打败了93%

class Solution:
    def addStrings(self, num1: str, num2: str) -> str:
        num1l=len(num1)-1
        num2l=len(num2)-1
        p=0
        res=''
        while((num1l>=0)|(num2l>=0)):
            n1=int(num1[num1l]) if num1l>=0 else 0
            n2=int(num2[num2l]) if num2l>=0 else 0
            res=str((n1+n2+p)%10)+res
            p=(n1+n2+p)//10
            num1l-=1
            num2l-=1
        res=str(p)+res if p else res
        return res

执行用时 :48 ms, 在所有 python3 提交中击败了93.00%的用户
内存消耗 :13.7 MB, 在所有 python3 提交中击败了5.08%的用户

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值