前端算法-二进制求和

简介: 前端算法-二进制求和

题目


给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。

输入: a = "1010", b = "1011"
输出: "10101"


题解


首先我们先声明七个变量,acc变量和sum变量我们先让它的值默认是0,sums变量是一个空数组,aArr变量的值是将出参a使用split方法进行转换成数组,在使用map方法循环每一个数,在循环中使用Number方法转换为数字类型,这样就是一个值全是数字的数组,bArr变量也是如此,不过相对应的是出参b进行这么操作,addA变量的值是使用pop方法从aArr数组中获取到的末尾值,addB变量的值是使用pop方法从bArr数组中获取到的末尾值,在使用while循环进行循环,循环条件为当前addB变量的值或addA变量的值都是number类型,在循环中我们使用if语句进行判断,如果当前addA变量和addB变量的值都与null不相等,我们则将addA变量和addB变量的值和acc变量的值进行相加赋值给sum变量,如果不满足此条件则继续判断当前addA变量是否与null不相等,如果是则将addA变量的值和acc变量的值进行相加赋值给sum变量,如还不满足我们就进入最后一步将当前addB变量的值和acc变量的值进行相加赋值给sum变量,然后在使用if语句进行判断,判断当前sum变量是否大于1,如果满足则将sum的值与2相余,将余下来的值赋值给sum变量,同时也将acc变量赋值为1,如果不满足则将acc变量赋值为0,在使用unshiftsum的值插入到sums数组的最前面,在对aArr数组使用pop方法获取末尾值并赋值给addA变量,addB变量也如此一般,不过是对bArr数组进行操作,然后等待循环结束后,我们在进行判断当前acc变量是否大于0,如果大于0则使用unshift方法将acc变量插入到sums数组中,最后我们对sums数组使用join方法使其转换成字符串,直接返回出去即可

/**
 * @param {string} a
 * @param {string} b
 * @return {string}
 */
var addBinary = function (a, b) {
    let acc = 0
    let sum = 0
    let sums = []
    let aArr = a.split('').map(r => Number(r))
    let bArr = b.split('').map(r => Number(r))
    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('')
};
相关文章
|
1月前
|
算法 前端开发 数据可视化
数据结构与算法在前端开发中的实际应用
本文将探讨数据结构与算法在前端开发中的实际应用,重点介绍在处理大规模数据、优化性能和提升用户体验方面的具体场景和解决方案。
|
11天前
|
算法 前端开发
前端算法 岛屿的最大面积 DFS(深度优先搜索)
前端算法 岛屿的最大面积 DFS(深度优先搜索)
11 0
|
1月前
|
算法
算法题 — 整数转二进制,查找其中1的数量
算法题 — 整数转二进制,查找其中1的数量
12 0
|
3月前
|
算法 前端开发
前端算法-路径总和
前端算法-路径总和
|
3月前
|
算法 前端开发
前端算法-平衡二叉树
前端算法-平衡二叉树
|
3月前
|
算法 前端开发
前端算法-将有序数组转换为二叉搜索树
前端算法-将有序数组转换为二叉搜索树
|
3月前
|
算法 前端开发
前端算法-对称二叉树
前端算法-对称二叉树
|
3月前
|
存储 算法 前端开发
前端算法- 二叉树的中序遍历
前端算法- 二叉树的中序遍历
|
3月前
|
存储 算法 前端开发
前端算法-合并两个有序数组
前端算法-合并两个有序数组
|
3月前
|
存储 算法 前端开发