21 Add Binary 二进制加法

75 阅读1分钟

67. Add Binary

解题思路

  1. 首先需要将字符串全部转换为数字烈性的数组 number[]
  2. 在相加的过程中无非需要关注三个元素,acc 是否进位 sum 相加的结果
  3. 在每一轮循环后需要注意 acc 需要更新,如果 sum 大于 1 就 acc = 1 否则设置为 0
  4. 最后将相加后的sum,推入到 sums的第一位即进行 sums.unshift(sum)操作
  5. 循环完成后,如果 acc进位不为 0,需要添加到首位
  6. 直接返回 sums.join('') 即可

代码

/**
 * @param {string} a
 * @param {string} b
 * @return {string}
 */
var addBinary = function (a, b) {
    let acc = 0
    let sum = 0
    let sums = []
    const aArr = a.split('').map(str => +str)
    const bArr = b.split('').map(str => +str)
    let addA = aArr.pop()
    let addB = bArr.pop()
    while (typeof addA === 'number' || typeof addB === 'number') {
        if (addA != null && addB != null) {
            sum = addA + addB + acc
        } else if (addA != null) {
            sum = addA + acc
        } else {
            sum = addB + acc
        }
        if (sum > 1) {
            sum = sum % 2
            acc = 1
        } else {
            acc = 0
        }

        sums.unshift(sum)

        addA = aArr.pop()
        addB = bArr.pop()
    }
    if (acc > 0) {
        sums.unshift(acc)
    }
    return sums.join('')
};