广告公司推广软文威海seo
题:给定两个 01 字符串 a 和 b ,请计算它们的和,并以二进制字符串的形式输出。输入为 非空 字符串且只包含数字 1 和 0。
方法一: 直接将二进制字符串转为十进制再相加(方便简洁)
function addBinary (a, b) {a = BigInt(`0b${a}`); // 使用 BigInt 解析二进制字符串->十进制bigInt类型 0b:表示后面字符为二级制,0o:八进制 0x:十六进制 十进制不需要前缀b = BigInt(`0b${b}`);let c = a + b;return c.toString(2); // BigInt 的 toString 方法支持二进制输出
};
方法二: 模拟二进制加法逐位计算(性能好)
var addBinary = function (a, b) { let i = a.length - 1;let j = b.length - 1;let result = '';let carry = 0;while (i >= 0 || j >= 0) { let digitA = i >= 0 ? a[i] - '0' : 0;let digitB = j >= 0 ? b[j] - "0" : 0;let sum = digitA + digitB + carry;if (sum > 1) {carry = 1sum -= 2;} else {carry = 0}result = sum + result;i--;j--;}if (carry === 1) {result = '1' + result;}return result;
}