67. 二进制求和

107 阅读1分钟

67. 二进制求和

  1. 模拟自己手算二进制的情况
  2. 从低位开始,逐个计算a+b+进位的和
  3. 如果和为2,则进位,和更新为0
  4. 如果和为3,则进位,和更新为1
  5. 否则进位为0
const addBinary = (a, b) => {
    const res = [];
    let c = 0;
    let [i, j] = [a.length - 1, b.length - 1];
    while (i >= 0 || j >= 0 || c) {
        const aa = Number(a[i]) ? Number(a[i]) : 0;
        const bb = Number(b[j]) ? Number(b[j]) : 0;
        let sum = aa + bb + c;
        if (sum === 2) {
            sum = 0;
            c = 1;
        } else if (sum === 3) {
            sum = 1;
            c = 1;
        } else {
            c = 0;
        }
        res.unshift(sum);
        i--;
        j--;
    }
    return res.join('');
};