当前位置: 首页 > news >正文

二进制求和(js实现,LeetCode:67)

这道题我的解决思路是先将a和b的长度保持一致以方便后续按位加减

let lena = a.length
let lenb = b.length
if (lena !== lenb) {
    if (lena > lenb) {
        for (let i = 0; i <lena-lenb; i++) {
            b = '0' + b
        }
    } else {
        for (let i = 0; i < lenb-lena; i++) {
            a = '0' + a
        }
    }
}

 下一步直接进行按位加减,做这一步时无需考虑是否需要进位

let c = ''
for (let i = 0; i < a.length; i++) {
    c = c + Number(Number(a[i]) + Number(b[i]))
}

最后通过将c转换为数组来做二进制进位

arr = c.split('')
    for (let j = arr.length - 1; j > 0; j--) {
        if (Number(arr[j]) >= 2) {
            arr[j] = Number(arr[j]) - 2
            arr[j - 1] = Number(arr[j - 1]) + 1
        }
    }

    if (Number(arr[0]) >1) {
        arr[0] = Number(arr[0]) - 2
        arr.unshift(1)
    }

最后将arr拼接成字符串之后返回

return arr.join('')

下面附上完整代码

/**
 * @param {string} a
 * @param {string} b
 * @return {string}
 */
var addBinary = function (a, b) {

    let lena = a.length
    let lenb = b.length
    let c = ''
    let arr = []
    if (lena !== lenb) {
        if (lena > lenb) {
            for (let i = 0; i <lena-lenb; i++) {
                b = '0' + b
            }
        } else {
            for (let i = 0; i < lenb-lena; i++) {
                a = '0' + a
            }
        }
    }

    for (let i = 0; i < a.length; i++) {
        c = c + Number(Number(a[i]) + Number(b[i]))
    }
    arr = c.split('')
    for (let j = arr.length - 1; j > 0; j--) {
        if (Number(arr[j]) >= 2) {
            arr[j] = Number(arr[j]) - 2
            arr[j - 1] = Number(arr[j - 1]) + 1
        }
    }

    if (Number(arr[0]) >1) {
        arr[0] = Number(arr[0]) - 2
        arr.unshift(1)
    }
    return arr.join('')
};

 

相关文章:

  • 如何在宝塔mysql修改掉3306端口
  • 数据库系统概念全面解析
  • 【从零开始学习计算机科学】数据库系统(五)DBMS查询处理
  • 高德爬取瓦片和vue2使用
  • 【ubuntu】——wsl中使用windows中的adb
  • 深度学习项目--基于DenseNet网络的“乳腺癌图像识别”,准确率90%+,pytorch复现
  • Spring Boot 3.3.4 升级导致 Logback 之前回滚策略配置不兼容问题解决
  • Spring Boot(十六):使用 Jenkins 部署 Spring Boot
  • 51单片机的keil c51软件安装教程
  • 鸿蒙开发-一多开发之媒体查询功能
  • [论文阅读]Demystifying Prompts in Language Models via Perplexity Estimation
  • Go语言 vs Java语言:核心差异与适用场景解析
  • MySQL 里的“锁”:保护数据的门卫
  • harbor v2.12.2 使用https公网访问
  • Linux中grep、sed和awk常见用法总结
  • OpenCV之颜色空间转换
  • 基于Vue3的流程图绘制库
  • (全)2024下半年真题 系统架构设计师 综合知识 答案解析01
  • 【软考网工-实践篇】NAT网络地址转换协议
  • 计算机三级网络技术知识汇总【9】
  • 雅典卫城上空现“巨鞋”形状无人机群,希腊下令彻查
  • 河南:响鼓重锤对违规吃喝问题露头就打、反复敲打、人人喊打
  • 著名词作家陈哲逝世,代表作《让世界充满爱》《同一首歌》等
  • 终于越过萨巴伦卡这座高山,郑钦文感谢自己的耐心和专注
  • 从能源装备向应急装备蓝海拓展,川润股份发布智能综合防灾应急仓
  • 商人运作亿元“茅台酒庞氏骗局”,俩客户自认受害人不服“从犯”判决提申诉