题目:
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
提示:
num1 和num2 的长度都小于 5100
num1 和num2 都只包含数字 0-9
num1 和num2 都不包含任何前导零
你不能使用任何内建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式
思路:
和二进制数相加一样,设置结果字符串,进位,当前加和值,遍历长度为两个字符串中最长的,开始遍历字符串,索引要正序不能直接逆序,直接逆序索引不到较短字符串后面的字符,取除以10的余数加在结果字符串前面,取除以10的整数部分作为进位,最后如果进位不为0,加在结果字符串前面。
class Solution(object):
def addStrings(self, num1, num2):
"""
:type num1: str
:type num2: str
:rtype: str
"""
res = ''
carry = 0
val = 0
length = max(len(num1),len(num2))
for i in range(length):
val = carry
if i < len(num1):
val = val + int(num1[-i-1])
if i < len(num2):
val = val + int(num2[-i-1])
res = str(val%10) + res
carry = val // 10
if carry:
res = str(carry) + res
return res