题目在这:https://leetcode-cn.com/problems/add-strings/
思路分析:
将字符串像整数那样进行相加。
首先遍历两个字符串,将他们的长度变为一样的,短的哪一个在前置位补0。
然后建立两个空列表 n1和n2,遍历两个字符串,将每个字符变成int型加入到列表中。
使用双指针法,分别指向两个列表的最后一位,向前遍历。注意:这里一定是从后向前遍历,前面一定是在前置位补0.
因为在做加法计算的时候,是从右向左计算,有进位的,往左边进位。
中间使用temp记录进位即可。
完整代码
class Solution:
def addStrings(self, num1: str, num2: str) -> str:
n1 = []
n2 = []
# 将两个字符串变成相同的长度 少的补0
while len(num1) < len(num2):
num1 = '0' + num1
while len(num1) > len(num2):
num2 = '0' + num2
# 全部变成int型加入列表
for i in range(len(num1)):
n1.append(int(num1[i]))
for j in range(len(num2)):
n2.append(int(num2[j]))
print(n1,n2)
res = []
i = len(n1) -1
j = len(n2) -1
temp = 0
while True:
if n1[i] + n2[j] + temp >=10:
res.append(n1[i] + n2[j] - 10 + temp)
temp = 1
elif n1[i] + n2[j] + temp <10:
res.append(n1[i] + n2[j] + temp)
temp = 0
i -=1
j -=1
if i <0 and j < 0 :
break
print(res[::-1])
ans = ""
for k in res[::-1]:
ans += str(k)
if temp == 1:
ans = '1' + ans
print(ans)
return ans