题目: 给定两个二进制字符串,返回他们的和(用二进制表示)。 输入为非空字符串且只包含数字 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); } };