LeetCode笔记-----67 二进制求和

写在前边

本文为系列文章,记录自己在leetcode上刷题的一些笔记,欢迎大家一块儿讨论。

题目描述

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

示例 1:

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

示例 2:

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

解决思路

这道题的主要思路都不是很难理解,无非就是从低位进行相加,然后保存进位,只是需要注意一些细节问题就行。直接上代码。

/**
 * @param {string} a
 * @param {string} b
 * @return {string}
 */
var addBinary = function(a, b) {
    a = a.split('').reverse();
    b = b.split('').reverse();
    var add = 0;    //保存进位
    var c = [];
    var len = Math.max(a.length,b.length);

    for(var i=0;ivar sum =
         (a[i]=== undefined?0:Number(a[i])) + 
         (b[i]=== undefined?0:Number(b[i])) +
         add ;

        c[i] = sum & 1;   //保证c数组中非0即1
        if(sum>=2){       //如果相加结果大于1 说明有进位,更改add值
            add = 1
        }else{
            add = 0
        }
    }
    if(add){           
        c[len] = 1;
    }

    return c.reverse().join('').toString();
};

代码啥的已经更新在GitHub上,欢迎大家指点github

你可能感兴趣的:(leetcode,javascript)