leetcode 08 大数相加
就最近遇到一个比较有特点的题,特点大数这个东西第一次听说这么搞。
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
提示:
num1 和num2 的长度都小于 5100
num1 和num2 都只包含数字 0-9
num1 和num2 都不包含任何前导零
你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式
因为给出的大数是 字符串,考虑到需要逆序,比较容易的方式在自己了解不多的语言中认为 Python 比较好用,因为字符串逆序和字符串分割为数组会比较简单。于是就这么干了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| class Solution: def addStrings(self, num1: str, num2: str) -> str: num_revert_1 = num1[::-1] num_revert_2 = num2[::-1] len_1 = len(num1) len_2 = len(num2) max_len = len_1 if len_1 > len_2 else len_2 mini_len = len_1 if len_1 < len_2 else len_2
max_str_rever = num_revert_1 if max_len == len_1 else num_revert_2 mini_str_rever = num_revert_1 if mini_len == len_1 else num_revert_2 if max_len == mini_len: max_str_rever = num_revert_1 mini_str_rever = num_revert_2 return_str = "" need_add = 0 for i in range(max_len): tmp_add = (int(max_str_rever[i]) + int(mini_str_rever[i])) if (i < mini_len) else (int(max_str_rever[i])) second_add = tmp_add % 10 + need_add return_str += str(second_add % 10) need_add = 1 if (second_add >= 10 or tmp_add >= 10) else 0 if need_add == 1: return_str += '1' return return_str[::-1]
|