- 模拟自己手算二进制的情况
- 从低位开始,逐个计算a+b+进位的和
- 如果和为2,则进位,和更新为0
- 如果和为3,则进位,和更新为1
- 否则进位为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('');
};