二进制求和

92 阅读1分钟

这题虽然是简单题,但是直接看也会有点不懂。写了很多注释。 题目: 给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。

解法:

var addBinary = function(a, b) {
    let ans = "";
    let ca = 0;
    for(let i = a.length - 1, j = b.length - 1;i >= 0 || j >= 0; i--, j--) {
        let sum = ca;
       //小于0的不加,但是要处理完,因为有进位
        sum += i >= 0 ? parseInt(a[i]) : 0;
        sum += j >= 0 ? parseInt(b[j]) : 0;
       //最后一位,取余进位
        ans += sum % 2;
       //高位+1
        ca = Math.floor(sum / 2);
    }
    //全部轮询完,最后加高位
    ans += ca == 1 ? ca : "";
    return ans.split('').reverse().join('');
};