题目:给定两个 01 字符串 a 和 b ,请计算它们的和,并以二进制字符串的形式输出。输入为 非空 字符串且只包含数字 1 和 0。
解题思路与答案
1.逐位相加,记录进位,有两行不明白,说是这个方法是双指针
var addBinary = function(a, b) {
let i = a.length - 1, j = b.length - 1, r = 0;
let res = '';
while (i >= 0 || j >= 0 || r > 0) {
if (i >= 0) r += 1 * a[i--]; //这里不明白
if (j >= 0) r += 1 * b[j--];
res += r % 2; //记录结果
r >>= 1; //记录进位
}
//split() 方法使用指定的分隔符字符串将一个String对象分割成子字符串数组
return res.split('').reverse().join('');
}