给你两个二进制字符串,返回它们的和(用二进制表示)。

输入为 非空 字符串且只包含数字 1 0

示例1:

输入: a = “11”, b = “1” 输出: “100”

示例2:

输入: a = “1010”, b = “1011” 输出: “10101”

//满二进一
var addBinary = function(a, b) {
    let sum = 0	//保留上一次位数相加后是否进一
    let result = ""
    for(let i = a.length -1, j = b.length-1; i >= 0 || j >= 0; i--, j--){
        let count = sum	//取sum的值,与本次遍历的两数相加
        count += a[i] > 0 ? parseInt(a[i]) : 0
        count += b[j] > 0 ? parseInt(b[j]) : 0
        //count的值只可能为 0、1、2、3
        result += count % 2
        sum = Math.floor(count / 2)	// count >= 2 时会进一
    }
    result += sum == 1 ? sum : "" //最后要检查sum是否为1,为1则表示还需要进位
    return result.split("").reverse().join("") //反转,因为是从字符串末端开始遍历
};