题解 | #大数加法#
大数加法
https://www.nowcoder.com/practice/11ae12e8c6fe48f883cad618c2e81475
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # 计算两个数之和 # @param s string字符串 表示第一个整数 # @param t string字符串 表示第二个整数 # @return string字符串 # class Solution: def solve(self, s: str, t: str) -> str: def addss(s1, s2, ls): m, n = len(s), len(t) i = j = flag = 0 while i < m and j < n: temp = int(s[i]) + int(t[j]) + flag if 0 <= temp <= 9: ls.append(temp) flag = 0 else: temp = str(temp) ls.append(temp[1]) flag = 1 i += 1 j += 1 if i == m and j == n and flag == 1: ls.append(1) return i, j, flag, ls def adds(p, flag, ss, res): while p < len(ss): if flag == 0: res.append(ss[p:]) break else: temp = int(ss[p]) + flag if 0 <= temp <= 9: res.append(ss[p]) flag = 0 else: temp = str(temp) res.append(temp[1]) flag = 1 p += 1 if p == len(ss) and flag == 1: res.append(1) return res s, t = s[::-1], t[::-1] res = [] # 另一个字符串为空 if s == "": return t if t == "": return s # 相加 i, j, flag, res = addss(s, t, res) # 处理剩余部分 res = adds(i, flag, s, res) res = adds(j, flag, t, res) # 对顺序进行处理 res.reverse() return ''.join(str(x) for x in res)