这个题,就随便写写。
题目:
415. 字符串相加
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
注意:
num1 和num2 的长度都小于 5100.
num1 和num2 都只包含数字 0-9.
num1 和num2 都不包含任何前导零。
你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。
代码:
class Solution:
def addStrings(self, num1: str, num2: str) -> str:
num1 = num1[::-1]
num2 = num2[::-1]
flag = 0
res = []
for i in range(min(len(num1), len(num2))):
temp = int(num1[i]) + int(num2[i]) + flag
flag = temp // 10
temp = temp % 10
res.append(str(temp))
last_num = num1[i+1:] + num2[i+1:]
for j in range(len(last_num)):
temp = flag + int(last_num[j])
flag = temp // 10
temp = temp % 10
res.append(str(temp))
if flag:
res.append(str(flag))
a = ''
s = a.join(res)
return s[::-1]
好了。
但是,这种题,如果考虑到用指针,会更好写。
如下:
class Solution:
def addStrings(self, num1: str, num2: str) -> str:
carry = 0
i = len(num1)-1
j = len(num2)-1
res = ''
while i >= 0 or j>=0:
n1 = int(num1[i]) if i>=0 else 0
n2 = int(num2[j]) if j>=0 else 0
temp = n1 + n2 + carry
carry = temp // 10
res = str(temp%10) + res
i -= 1
j -= 1
return '1'+res if carry else res
好了。