题目
给定二进制字符串 a 和 b, 返回 他们相加后的二进制字符串.
示例 1:
输入: a = "11", b = "1"
输出: "100"
示例 2:
输入: a = "1010", b = "1011"
输出: "10101"
思路
- 正向遍历i,倒着取值。
- 有记录进位
- 逆序输出字符串
function addBinary(a: string, b: string): string {
const numbers = [];
const len1 = a.length;
const len2 = b.length;
const max = Math.max(len1, len2);
let pre = 0;
for(let i = 0; i < max; i++) {
const val1 = i < len1 ? +a[len1 - 1 - i] : 0;
const val2 = i < len2 ? +b[len2 - 1 - i] : 0;
const sum = val1 + val2 + pre;
numbers.push(sum % 2);
pre = sum > 1 ? 1 : 0;
}
if(pre) numbers.push(pre);
return numbers.reverse().join('');
};