美文网首页
67. 二进制求和

67. 二进制求和

作者: 最尾一名 | 来源:发表于2020-02-29 21:41 被阅读0次

原题

https://leetcode-cn.com/problems/add-binary/

解题思路

如果直接用 JS 内置的 (parseInt(a, 2) + parseInt(b, 2)).toString(2),会因为数值超过表示范围而通不过某些测试用例。

因此:先用数组从最小位开始存储每一位数,再依次相加,记录进位并更新结果。

代码

/**
 * @param {string} a
 * @param {string} b
 * @return {string}
 */
// var addBinary = function(a, b) {
//     return (parseInt(a, 2) + parseInt(b, 2)).toString(2);
// };
const genReverseArr = (a) => a.split("").reverse();

const max = (a, b) => (a > b ? a : b);

var addBinary = function(a, b) {
    const arrA = genReverseArr(a), arrB = genReverseArr(b);
    const maxLen = max(arrA.length, arrB.length);
    let currentIndex = 0, res = '', carry = 0;
    while (currentIndex < maxLen) {
        let temp = carry + (arrA[currentIndex] ? parseInt(arrA[currentIndex], 10) : 0) + (arrB[currentIndex] ? parseInt(arrB[currentIndex], 10) : 0);
        carry = temp > 1 ? 1 : 0;
        res = temp % 2 + res;
        ++currentIndex;
    }
    if (carry) {
        res = '1' + res;
    }
    return res;
};

复杂度

  • 时间复杂度 O(N)
  • 空间复杂度 O(N)

相关文章

  • Leetcode-67 二进制求和

    67. 二进制求和[https://leetcode-cn.com/problems/add-binary/] 解...

  • LeetCode 67. 二进制求和 | Python

    67. 二进制求和 题目来源:力扣(LeetCode)https://leetcode-cn.com/proble...

  • python实现leetcode之67. 二进制求和

    解题思路 从尾部往前逐位加,注意进位 67. 二进制求和[https://leetcode-cn.com/prob...

  • 67. 二进制求和

    给定两个二进制字符串,返回他们的和(用二进制表示)。 输入为非空字符串且只包含数字 1 和 0。 示例 1: 输入...

  • 67. 二进制求和

    给定两个二进制字符串,返回他们的和(用二进制表示)。 输入为非空字符串且只包含数字 1 和 0。 示例 1: 输入...

  • 67.二进制求和

  • 67. 二进制求和

    给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。示例 1:输入: a...

  • 67. 二进制求和

    内容 给定两个二进制字符串,返回他们的和(用二进制表示)。 输入为非空字符串且只包含数字 1 和 0。 示例 1:...

  • 67. 二进制求和

    文|Seraph 01 | 问题 给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字...

  • 67. 二进制求和

    二进制求和 给你两个二进制字符串,返回它们的和(用二进制表示)。 输入为 非空 字符串且只包含数字 1 和 0。 ...

网友评论

      本文标题:67. 二进制求和

      本文链接:https://www.haomeiwen.com/subject/qwzbhhtx.html