题目:
Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
思路:
反序遍历字符串,并判断是否有进位。
代码如下
var addBinary = function(a, b) {
var alen = a.length;
var blen = b.length;
if(alen === 0){
return b;
}else if(blen === 0){
return a;
}
//将a、b变成等长的字符串
if(alen>blen){
for(var i=0;i<alen-blen;i++){
b = "0"+b;
}
blen = b.length;
}else if(alen<blen){
for(i=0;i<blen-alen;i++){
a = "0" + a;
}
alen = a.length;
}
var c;
var carry = 0; //进位判断
var result = [];
var len = alen -1;
while(len > -1){
c = parseInt(a.charAt(len)) + parseInt(b.charAt(len)) + carry;
carry = parseInt(c/2);
if(c%2){
result.unshift("1");
}else{
result.unshift("0");
}
len--;
}
if(carry == 1){
result.unshift("1");
}
result = result.join(""); //将数组转换成字符串
return result;
};