题解 | #大数加法#
大数加法
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)