1. 题目描述
给你两个二进制字符串,返回它们的和(用二进制表示)。
输入为 非空 字符串且只包含数字 1 和 0。
示例 1:
输入: a = "11", b = "1"
输出: "100"
示例 2:
输入: a = "1010", b = "1011"
输出: "10101"
提示:
- 每个字符串仅由字符 ‘0’ 或 ‘1’ 组成。
- 1 <= a.length, b.length <= 10
-
2. 实现思路
这个使用最直接的方法来解决,直接对应位进行相加操作,需要对进位数进行判断,然后给出不同的操作。最后需要注意,如果还有进位,就在结果的前面加个1。
3. 代码实现
/**
* @param {string} a
* @param {string} b
* @return {string}
*/
var addBinary = function(a, b) {
// 首先将两个树的位数补齐
while(a.length > b.length) b = "0" + b
while(a.length < b.length) a = "0" + a
let res = new Array(a.length)
let sum = 0
let temp = 0 // 进位
for(let i = a.length - 1; i >= 0; i --){
sum = Number(a[i]) + Number(b[i]) + temp
if(sum >= 2){
res[i] = sum - 2
temp = 1
}else{
res[i] = sum
temp = 0
}
}
if(temp) res.unshift(1)
return res.join("")
};
4. 提交结果