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" + bwhile(a.length < b.length) a = "0" + alet res = new Array(a.length)let sum = 0let temp = 0 // 进位for(let i = a.length - 1; i >= 0; i --){sum = Number(a[i]) + Number(b[i]) + tempif(sum >= 2){res[i] = sum - 2temp = 1}else{res[i] = sumtemp = 0}}if(temp) res.unshift(1)return res.join("")};
4. 提交结果

