<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">题目:</span>
Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
解答1:
错误:无法解决较大数据的转换
/**
* @param {string} a
* @param {string} b
* @return {string}
*/
var addBinary = function(a, b) {
var array_a = parseInt(a,2);
var array_b = parseInt(b,2);
var result = array_a + array_b;
var resultStr = result.toString(2);
return resultStr;
};
解答2:
正确:
<pre name="code" class="javascript">/**
* @param {string} a
* @param {string} b
* @return {string}
*/
var addBinary = function(a, b) {
var array_a = a.split("").reverse();
var array_b = b.split("").reverse();
var resultArray = [];
var stepIn = 0;
for(var i = 0;i<array_a.length||i<array_b.length||stepIn;i++){
var a_i = parseInt(array_a[i])||0;
var b_i = parseInt(array_b[i])||0;
var result_i = a_i + b_i + stepIn;
if(result_i == 0){
resultArray[i] = 0;
stepIn = 0;
}else if(result_i == 1){
resultArray[i] = 1;
stepIn = 0;
}else if(result_i == 2){
resultArray[i] = 0;
stepIn = 1;
}else{
resultArray[i] = 1;
stepIn = 1;
}
}
resultArray = resultArray.reverse();
var resultStr = "";
// resultStr = resultArray.join("");
for(i = 0;i<resultArray.length;i++){
resultStr +=resultArray[i];
}
return resultStr;
};