二进制求和

两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。

例:

  • 输入:a = “11”, b = “1”
  • 输出:”100”
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function addBinary(a: string, b: string): string {
let add = 0;
let sum = [];

for (let i = a.length - 1, j = b.length - 1; i >= 0 || j >= 0; i--, j--) {
// 位数不够,默认为 0
let num1 = +a[i] || 0;
let num2 = +b[j] || 0;

// 两数相同异或为0,0与任意数字异或为数字本身
sum.unshift(num1 ^ num2 ^ add);
add = num1 + num2 + add > 1 ? 1 : 0;
}

if (add === 1) sum.unshift(1);

return sum.join('');
};