Leetcode题解之 —— 字符串相加

思路


思路一(耗时126ms)

双指针法

  • 两个指针分别指向对应的数
  • 同步遍历, 相加, 计算步数
  • 注意最后一位进位

题解


  • 解法一
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
27
/**
* @param {string} num1
* @param {string} num2
* @return {string}
*/
var addStrings = function(num1, num2) {
// TODO solution 1
let [trav1, trav2, step, result] = [num1.length - 1, num2.length - 1, 0, ''];

while (trav1 >= 0 || trav2 >= 0) {
const [v1, v2] = [
num1[trav1] ? Number(num1[trav1]) : 0,
num2[trav2] ? Number(num2[trav2]) : 0,
];
const total = v1 + v2 + step;
const temp = total % 10;
result = temp + result;
step = ~~(total / 10);

trav1--;
trav2--;
}

step && (result = step + result);

return result;
};