字符串相加

给定两个字符串形式的非负整数 num1 和 num2 ,计算它们的和并同样以字符串形式返回。
你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。

  • 输入:num1 = “11”, num2 = “123”

  • 输出:”134”

  • 输入:num1 = “456”, num2 = “77”

  • 输出:”533”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
var addStrings = function(num1, num2) {
// 结果
let base = 10
let result = '';
// 进位标记
let carry = 0;
// 设置 a、b 的长度,方便逆序遍历
let num1Index = num1.length - 1, num2Index = num2.length - 1;
while (num1Index >= 0 || num2Index >= 0) { // num1 或 num2 还有位可以相加
// num1Index bIndex可能为负数值,需要转化为 0
sum = (+num1[num1Index] || 0) + (+num2[num2Index] || 0) + carry;
// 是否需要进位
carry = sum >= base ? 1 : 0;
// 计算最终结果
result = sum % base + result;
// 移位后往更高位靠
num1Index--;
num2Index--;
}
// 如果计算完毕后还有进位,那么前面 + 1
if (carry) {
result = '1' + result;
}
// 返回最终结果
return result;
};