Skip to content
On this page

67. 二进制求和

原题链接:LeetCode 67. 二进制求和

题目描述

给你两个二进制字符串 ab ,以二进制字符串的形式返回它们的和。

示例 1:

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

示例 2:

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

提示:

1 <= a.length, b.length <= 104
- `a` 和 `b` 仅由字符 `'0'` 或 `'1'` 组成

- 字符串如果不是 `"0"` ,就不含前导零

难度: Easy


题解代码

javascript
/**
 * @param {string} a
 * @param {string} b
 * @return {string}
 */
var addBinary = function(a, b) {

    // 没有超过安全数的情况下可以这样用
    // return (parseInt(a, 2) + parseInt(b, 2)).toString(2)
    
        var res = [];
        var n1 = a.length;
        var n2 = b.length;
        var a = a.split('');
        var b = b.split('');
        var carry = 0;
        if (n1 < n2) {
            for (var i = 0; i < n2 - n1; ++i) {
                a.unshift(0);
            }
        }
        if (n1 > n2) {
            for (var i = 0; i < n1 - n2; ++i) {
                b.unshift(0);
            }
        }
        for (var i = Math.max(n1, n2) - 1; i >= 0; i--) {
            var sum = Number(a[i]) + Number(b[i]) + carry;
            res.unshift(sum % 2);
            carry = Math.floor(sum / 2);
        }
        if (carry) {
            res.unshift(1);
        }
        return res.join('')
};

技术文档集合