给你两个二进制字符串,返回它们的和(用二进制表示)。
输入为 非空 字符串且只包含数字 1
和 0
。
示例 1:
输入: a = "11", b = "1" 输出: "100"
示例 2:
输入: a = "1010", b = "1011" 输出: "10101"
提示:
- 每个字符串仅由字符
'0'
或'1'
组成。 1 <= a.length, b.length <= 10^4
- 字符串如果不是
"0"
,就都不含前导零。
/**
* @param {string} a
* @param {string} b
* @return {string}
*/
var addBinary = function (a, b) {
if (a == null || a.length == 0) return b;
if (b == null || b.length == 0) return a;
let stb = "";
let i = a.length - 1;
let j = b.length - 1;
let c = 0;
while (i >= 0 || j >= 0) {
if (i >= 0) c += a.charCodeAt(i--) - '0'.charCodeAt(0);
if (j >= 0) c += b.charCodeAt(j--) - '0'.charCodeAt(0);
stb = stb + (c % 2);
c >>= 1;
}
let res = reverseString(stb);
return c > 0 ? '1' + res : res;
};
function reverseString(str) {
var myArray = str.split("");
var a = myArray.reverse();
var str1 = a.join("");
return str1;
}
a = "1010", b = "1011";
console.log(addBinary(a, b));