跳到主要内容

二进制题库

二进制求和


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

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

示例1:

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

示例2:

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

方案 位运算

思路: 将ab转换成整型数字。如果b(进位)不为0,循环迭代:

  1. 计算当前ab的无进位相加结果: a^b
  2. 计算当前ab的进位: (a&b)<<1
  3. 更新aba保存无进位相加结果,b保存进位

:::details 点击查看代码

function addBinary(a, b) {
a=parseInt(a,2);
b=parseInt(b,2);
while(b!=0){
let result=a^b;
let carry=(a&b)<<1;
a=result;
b=carry;
}
return a.toString(2);
};

:::