二进制求和 - LeetCode

 题目:

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

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

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

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

答案:

/**
 * @param {string} a
 * @param {string} b
 * @return {string}
 */
let addBinary = function (a, b) {
    a = a.split('').reverse().join('');
    b = b.split('').reverse().join('');
    let len = Math.max(a.length, b.length);
    let upTwo = false;
    let strs = [];
    for (let i = 0; i < len + 1; i++) {
        let strA = a[i] == undefined ? 0 : a[i] * 1;
        let strB = b[i] == undefined ? 0 : b[i] * 1;

        if (upTwo == true) str = strA + strB + 1;
        else str = strA + strB;

        if (str >= 2) upTwo = true;
        else upTwo = false;
        str = str % 2;
        strs.push(str);
    }

    strs = strs.reverse().join('');

    while (strs[0] == 0) {
        checkZero();
    }
    if (strs == "") strs = '0';
    return strs;

    function checkZero() {
        strs = strs.substring(1, strs.length);
    }
};



猜你喜欢

转载自blog.csdn.net/hanzhijun527/article/details/80474642