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

被折叠的 条评论
为什么被折叠?



