这题虽然是简单题,但是直接看也会有点不懂。写了很多注释。
题目:
给你两个二进制字符串 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('');
};