给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
注意:
num1 和num2 的长度都小于 5100.
num1 和num2 都只包含数字 0-9.
num1 和num2 都不包含任何前导零。
你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。
1 class Solution(object):
2 def addStrings(self, num1, num2):
3 """
4 :type num1: str
5 :type num2: str
6 :rtype: str
7 """
8 if num1 == "0" or num2 == "0":
9 return num1 if num2 == "0" else num2
10 # 保证a串短,以a串为准进行遍历
11 if len(num1) > len(num2):
12 num1, num2 = num2, num1
13 # 反转
14 num1 = num1[::-1]
15 num2 = num2[::-1]
16 # 两串长度统一
17 while len(num1) < len(num2):
18 num1 += "0"
19 print(num1, num2)
20
21 # 开始运算
22 result = ""
23 # 进位
24 extra = 0
25 for index, num in enumerate(num1):
26 ans = (int(num) + int(num2[index]) + extra) % 10
27 # 判断进位
28 if int(num) + int(num2[index]) + extra >= 10:
29 extra = 1
30 else:
31 extra = 0
32 result += str(ans)
33 # 只用判断最高位有进位,不用判断无进位情况
34 if extra == 1:
35 result += "1"
36 return result[::-1]
37
38
39 if __name__ == '__main__':
40 solution = Solution()
41 print(solution.addStrings("123001", "456"))
42 print(solution.addStrings("1", "9"))