

你可以使用模拟手算加法的方法,从字符串的最低位(末尾)开始逐位相加,并记录进位。下面是 Python 代码实现:
def addStrings(num1: str, num2: str) -> str:
res = []
carry = 0
i, j = len(num1) - 1, len(num2) - 1
while i >= 0 or j >= 0 or carry:
n1 = int(num1[i]) if i >= 0 else 0
n2 = int(num2[j]) if j >= 0 else 0
total = n1 + n2 + carry
carry = total // 10
res.append(str(total % 10))
i -= 1
j -= 1
return ''.join(res[::-1])
# 示例测试
print(addStrings("123", "456")) # 输出 "579"
代码解析:
-
初始化:
res用于存储结果的每一位。carry用于存储进位值。i, j分别指向num1和num2的末尾,从最低位开始计算。
-
逐位相加:
- 取
num1[i]和num2[j]的整数值,若索引超出范围则默认为0。 - 计算当前位的和
total = n1 + n2 + carry。 - 计算新的进位
carry = total // 10,当前位的数字total % 10存入res。
- 取
-
拼接结果:
- 由于
res先存的是最低位,因此需要反转再拼接成字符串返回。
- 由于
这个方法避免了直接转换为整数,并且可以正确处理不同长度的输入字符串。
939

被折叠的 条评论
为什么被折叠?



