使用JavaScript书写代码:给你两个超过JavaScript最大有效数字的二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和,不许使用BigInt
时间: 2023-02-06 12:18:59 浏览: 117
我们可以手动实现二进制加法,如下所示:
```
function binaryAdd(a, b) {
// 反转字符串
a = a.split('').reverse().join('');
b = b.split('').reverse().join('');
// 初始化结果数组和进位标志
let result = [];
let carry = 0;
// 遍历两个数的每一位,从最低位开始加
for (let i = 0; i < Math.max(a.length, b.length); i++) {
let aBit = a[i] ? parseInt(a[i]) : 0;
let bBit = b[i] ? parseInt(b[i]) : 0;
// 加上进位
let sum = aBit + bBit + carry;
// 计算当前位的结果和进位
if (sum >= 2) {
result.push(sum % 2);
carry = 1;
} else {
result.push(sum);
carry = 0;
}
}
// 如果最后有进位,把它加到结果中
if (carry === 1) {
result.push(1);
}
// 反转结果并转换为字符串
return result.reverse().join('');
}
// 示例
console.log(binaryAdd('1101', '101')); // 输出:'10010'
```
这个函数的时间复杂度是 O(n),其中 n 是较长的二进制数的位数。
阅读全文