415. 字符串相加

给定两个字符串形式的非负整数 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"))


 
原文地址:https://www.cnblogs.com/panweiwei/p/12682154.html