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"))