一、题目描述
给你两个二进制字符串,返回它们的和(用二进制表示)。
输入为 非空 字符串且只包含数字 1
和 0
。
二、代码
/**
* @param {string} a
* @param {string} b
* @return {string}
*/
var addBinary = function(a, b) {
let alen = a.length - 1;
let blen = b.length - 1;
let addn = 0;
let result = [];
while(alen >= 0 || blen >= 0)
{
let tmp_val = 0;
if(alen >= 0 && blen >= 0) {
tmp_val = parseInt(a[alen]) + parseInt(b[blen]) + addn;
}
if(alen <0 && blen >= 0) {
tmp_val = parseInt(b[blen]) + addn;
}
if(blen <0 && alen >= 0) {
tmp_val = parseInt(a[alen]) + addn;
}
if(tmp_val > 2) {
addn = 1;
tmp_val = 1;
} else if(tmp_val > 1) {
addn = 1;
tmp_val = 0;
} else {
addn = 0;
}
result.unshift(tmp_val + '');
alen--;
blen--;
}
if(addn > 0) {
result.unshift('1');
}
return result.join('');
};
三、其它思路
利用parseInt转化成二进制,之后利用异或以及与或非进行CPU中ALU计算器模拟,具体可以看计算机组成原理中关于ALU块的详细讲解哦。
下机!!!!