// 67 easy 二進制求和
// 給定兩個二進制字符串,返回他們的和(用二進制表示)。
// 輸入爲非空字符串且只包含數字 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) {
let arr1 = a.split('')
let arr2 = b.split('')
// 補0
if (arr1.length !== arr2.length){
if (arr1.length > arr2.length){
let diff = arr1.length - arr2.length
for(let i = 0; i < diff; i++){
arr2.unshift("0")
}
} else {
let diff = arr2.length - arr1.length
for(let i = 0; i < diff; i++){
arr1.unshift("0")
}
}
}
// 求和
let sumArr = []
let isJinwei = false
for(let i = arr1.length - 1; i >= 0; i--){
let jinweiV = isJinwei ? 1: 0;
if (Number(arr1[i]) + Number(arr2[i]) + jinweiV < 2){
sumArr.unshift(Number(arr1[i]) + Number(arr2[i]) + jinweiV)
isJinwei = false
} else {
sumArr.unshift(Number(arr1[i]) + Number(arr2[i]) + jinweiV - 2)
isJinwei = true
}
}
if(isJinwei){
sumArr.unshift("1")
}
return sumArr.join('')
};
console.log(addBinary('1111', '1111'))
GitHub:https://github.com/cunzaizhuyi/brain-model-tool