题目分析
- 题目给出两个字符串,含义为两串数字
- 我们要返回数字加和之后的结果,以字符串的格式输出
方法一:python大整数处理
- 实现思路
-
python语言支持大整数,不受位数限制
-
因此转成整型之后直接相加即可
-
while True:
try:
n1 = int(input())
n2 = int(input())
print(n1+n2) # 直接输出整型数字相加之和的结果
except:
break
复杂度分析
- 时间复杂度:,大整数加和内部实现的方式不是直接的加和,同样要以一定的数据结构和内存空间使用并分段加和
- 空间复杂度:,没有题目要求之外的其他辅助空间的开销
方法二:逐位相加进位
- 实现思路
- 我们将两个字符串从尾到头进行处理
- 逐位相加,保留个位数字到结果字符串中,并记录进位的值在下一次循环中再次逐位相加
- 最终输出结果字符串
while True:
try:
s1 = list(map(int, input()))[::-1]
s2 = list(map(int, input()))[::-1]
res = ""
i = 0 # 遍历指针
addd = 0 # 进位
summ = 0 # 和
while i < max(len(s1), len(s2)): # 开始遍历
a = 0 if i >= len(s1) else s1[i] # 获取s1中的一位数字
b = 0 if i >= len(s2) else s2[i] # 获取s2中的一位数字
summ = (addd + a + b) % 10 # 计算和
addd = (addd + a + b) // 10 # 计算进位
res = str(summ) + res # 组织到输出字符串中
i += 1
if addd > 0: # 处理最后一位
res = "1" + res
print(res) # 输出
except:
break
复杂度分析
- 时间复杂度:,一次遍历的时间开销,和字符串长度有关
- 空间复杂度:,没有题目要求范围之外的空间开销