天天看點

LeetCode——字元串相加(JS實作)

題目描述

LeetCode——字元串相加(JS實作)

解題思路

由于本題不讓使用BigInt等将字元串轉換為整數形式,是以我們必須考慮使用其他的方法。是以本題考慮采用雙指針的方法。
  1. 使用兩個指針分别指向數字字元串的末尾位置。
  2. 使用變量carry記錄進位。
  3. 當兩個記錄下标的位置大于等于0,或者進位不等于零的時候都進入循環。
  4. 在循環中當使用charAt這個API擷取字元串對應下标的字元,兩個字元相減會變成number類型。
  5. 每次循環結束都将兩個指針左移一位。

解題代碼

var addStrings = function(num1, num2) {
    
    let l = num1.length - 1;
    let r = num2.length - 1;
    let carry = 0;
    let ans = [];
    while (l >= 0 || r >= 0 || carry !== 0) {
        let c1 = l >= 0 ? num1.charAt(l) - '0' : 0;
        let c2 = r >= 0 ? num2.charAt(r) - '0' : 0;
        let sum = c1 + c2 +  carry;
        ans.push(sum % 10);
        carry = Math.floor(sum / 10);
        l--;
        r--;
    }
    return ans.reverse().join('')
};
複制代碼      

題目反思

  1. 兩個數字字元相減會轉換為number類型。
  2. 可以使用 字元串.charAt(index) 來擷取字元串指定位置的字元。

繼續閱讀