LeetCode热题100-字符串相加

此题不在hot100

给定两个字符串形式的非负整数num1num2,计算它们的和并同样以字符串形式返回。

你不能使用任何內建的用于处理大整数的库(比如BigInteger), 也不能直接将输入的字符串转换为整数形式。

给定两个数字字符串,不能转整数 /long,模拟竖式加法,返回相加结果字符串。

核心思路

  1. 双指针:从末尾往前遍历
  2. 维护进位carry
  3. 逐位相加:当前和 = 个位1 + 个位2 + 进位
  4. 计算当前位、更新进位
  5. 最后反转结果
class Solution: def addStrings(self, num1: str, num2: str) -> str: i = len(num1) - 1 j = len(num2) - 1 carry = 0 res = [] while i >= 0 or j >= 0 or carry > 0: a = int(num1[i]) if i >= 0 else 0 b = int(num2[j]) if j >= 0 else 0 total = a + b + carry carry = total // 10 res.append(str(total % 10)) i -= 1 j -= 1 return "".join(reversed(res))