本文为系列文章,记录自己在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