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

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

示例 1:

输入: a = "11", b = "1" 输出: "100" 示例 2:

输入: a = "1010", b = "1011" 输出: "10101"

/**
 * @param {string} a
 * @param {string} b
 * @return {string}
 */
var addBinary = function(a, b) {
    var currPlus = 0,
        str = '';
    var alen = a.toString().length - 1,
        blen = b.toString().length - 1;
    var len = Math.max(alen, blen)
 
    while(len > -1){
        var temp = parseInt(alen > -1 ? a[alen] : 0) 
                    + parseInt(blen > -1 ? b[blen] : 0) 
                    + currPlus;
        if(temp == 2){
            str = '0' + str;
            currPlus = 1;
        }else if(temp < 2){
            str = temp.toString() + str;
            currPlus = 0;
        }else{
            str = (temp-2).toString() + str;
            currPlus = 1;
        }
        alen--;
        blen--;
        len--;
    }
    if(currPlus != 0 ){
        str = currPlus.toString() + str;
    }
    return str;
};