Python Leetcode(415.字符串相加)
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
注意:
num1 和num2 的长度都小于 5100.
num1 和num2 都只包含数字 0-9.
num1 和num2 都不包含任何前导零。
你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。
Solution:(题目要求不能直接把字符串转换为整数,可以计算每个字符与0的ASCII码的相对偏移,就相当于得到了字符的整数形式,设置两个指针,以及carry位进行计算)
class Solution(object):
def addStrings(self, num1, num2):
"""
:type num1: str
:type num2: str
:rtype: str
"""
res = ''
carry, i, j = 0, len(num1)-1, len(num2)-1
while i >= 0 or j >= 0 or carry > 0:
if i >= 0:
carry += ord(num1[i]) - ord('0')
if j >= 0:
carry += ord(num2[j]) - ord('0')
res += str(carry%10)
carry = carry // 10
i -= 1
j -= 1
return res[::-1]
solution = Solution()
print(solution.addStrings('1234', '4321'))
5555