题目描述:
给定两个二进制字符串,返回他们的和(用二进制表示)。
输入为非空字符串且只包含数字 1 和 0。
示例 1:
输入: a = "11", b = "1"
输出: "100"
示例 2:
输入: a = "1010", b = "1011"
输出: "10101"
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-binary
思路: 字符串转数组,数组元素变数字,逐项相加,要注意的是要把每次的进位加上。
/**
* @param {string} a
* @param {string} b
* @return {string}
*/
var addBinary = function(a, b) {
let arr1 = a.split('').reverse();
let arr2 = b.split('').reverse();
let arr3 = [];
let add = 0; // 进位
let len = Math.max(arr1.length, arr2.length);
for(let i = 0; i < len; i++) {
let sum = (arr1[i] === undefined ? 0 : Number(arr1[i])) + (arr2[i] === undefined ? 0 : Number(arr2[i])) + add;
arr3[i] = sum & 1;
if(sum >= 2) add = 1;
else add = 0;
}
if(add) {
arr3[len] = 1;
}
return arr3.reverse().join('').toString();
};