LeetCode热题(JS版)- 67. 二进制求和

51 阅读1分钟

题目

给定二进制字符串 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('');
};

image.png