刷爆力扣之二进制求和

news2025/1/11 6:14:15

刷爆力扣之二进制求和

HELLO,各位看官大大好,我是阿呆 🙈🙈🙈

今天阿呆继续记录下力扣刷题过程,收录在专栏算法中 😜😜😜

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jcAYfhES-1672147928147)(E:\2022年MD文档\LeetCode\我的刷题日记\字符串\刷爆力扣之二进制求和.assets\1672147909550.png)]

该专栏按照不同类别标签进行刷题,每个标签又分为 Easy、Medium、Hard 三个等级 👊👊👊

本部分所有题目均来自于LeetCode 网,并于每道题目下标明具体力扣网原题链接 🏃🏃🏃

OK,兄弟们,废话不多直接上题,冲冲冲 🌞🌞🌞


一 🏠 题目描述

67. 二进制求和

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

示例 1:

输入:a = "11", b = "1"
输出:"100"

示例 2:

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

提示:

  • 1 <= a.length, b.length <= 104
  • ab 仅由字符 '0''1' 组成
  • 字符串如果不是 "0" ,就不含前导零

二 🏠破题思路

2.1 🚀 关键信息

解决问题第一步,当然先提取题目字面上的关键信息 😎😎😎

二进制字符串 ab ,以二进制字符串的形式返回它们的和 = **【注意进位】**🌸🌸🌸


提取完题目中的关键信息后,直接进入第二阶段,思路整理 😃😃😃


2.2 🚀 思路整理

分类讨论法

经典题型,对应解题模板

① 定义两个输入长度和进位,以及输出

② 遍历输入,直至两个输入都结尾

③ 获取两个输入当前位数据相加,分类讨论有进位则进位

④ 处理最终产生进位的情况

最后返回二进制字符串形式的和 🌹🌹🌹


整理完解题思路后,直接进入第三阶段,代码实现 😃😃😃


三 🏠 代码详解

3.1 🚀 代码实现

按照我们刚才的破题思路,直接代码走起来 👇👇👇👇

string addBinary(string a, string b) {
    //定义当前位置索引, 获取两个输入字符串长度和进位
    int index = 1, aLen = a.size(), bLen = b.size(), carry = 0; 
    //初始化结果字符串
    std::string res = "";
    while (index <= aLen || index <= bLen) {
        char aChar = index <= aLen ? a[aLen - index] : '0'; //获取a当前字符
        char bChar = index <= bLen ? b[bLen - index] : '0'; //获取b当前字符
		
        //若两字符均为 '0', 根据有无进位, res 连接对应字符, 并将进位置 0
        if (aChar == bChar && aChar == '0') res += (carry == 0 ? '0' : '1'), carry = 0;
        //若两字符为一个 '0', 一个 '1', 根据有无进位, res 连接对应字符
        else if (aChar != bChar) res += (carry == 0 ? '1' : '0');
        //若两字符均为 '1', 根据有无进位, res 连接对应字符, 并将进位置 1
        else res += (carry == 0 ? '0' : '1'), carry = 1;
        ++index; //移动索引
    }

    if (carry == 1) res += '1'; //处理最终产生进位的情况
    reverse(res.begin(), res.end()); //反转字符串
    return res.size() != 0 ? res : "0"; //返回结果字符串
}

3.2 🚀 细节解析

看完 👀👀👀 全注释版的代码实现后,相信看官大大对整体逻辑已经是大写的 OK 了 😃😃😃

那么我们挖掘上述实现的晦涩细节 😖😖😖 进行解析,直接开干,走起来 👇👇👇👇

if (aChar == bChar && aChar == '0') res += (carry == 0 ? '0' : '1'), carry = 0;

aChar == bChar && aChar == '0',进位必然为 0 ,所以将 carry 置为 0 🐌🐌🐌


else if (aChar != bChar) res += (carry == 0 ? '1' : '0');

两字符为一个 0,一个 1 则,若 carry = 0res 连接 1carry 不变;若 carry = 1res 连接 0carry 不变 🐳🐳🐳


四 🏠 心路历程

为方便各位看官大大了解博主真实刷题过程,我把当时状态纯纯真实还原,记录在心路历程这一小节,不感兴趣的小伙伴可以直接跳过哈

博主在第一阶段提取 🚀 关键信息没有问题,在第二阶段 🚀 思路整理没有问题,上述实现和题解博主原创


五 🏠 结语

身处于这个浮躁的社会,却有耐心看到这里,你一定是个很厉害的人吧 👍👍👍

如果各位看官大大觉得文章有帮助的话,别忘了点赞 + 关注哦,你们的鼓励就是我最大的动力

博主还会不断更新更优质的内容,加油吧!技术人! 💪💪💪

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/118353.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spark零基础入门实战(八)Spark运行时架构

Spark有多种运行模式,可以运行在一台机器上,称为本地(单机)模式,也可以以YARN或Mesos作为底层资源调度系统以分布式的方式在集群中运行,称为Spark On YARN模式,还可以使用Spark自带的资源调度系统,称为Spark Standalone模式。 本地模式通过多线程模拟分布式计算,通常…

如何使用Python创建一个虚拟助理

使用Python创建一个虚拟助手 虚拟助理是基于人工智能的程序。它们是一种智能计算机程序&#xff0c;可以通过语音命令或文本理解人类的自然语言&#xff0c;并为用户执行任务。本文将指导你通过使用Python库来创建你自己的语音助手的过程。 在本教程中&#xff0c;我将在Jetb…

2022已经到了尾声,做一个漂亮的倒计时页面迎接2023年的到来

个人主页&#xff1a;天寒雨落的博客_CSDN博客-初学者入门C语言,python,数据库领域博主 目录 前言 效果图 网页直链 完整代码 倒计时的实现原理 前言 2022即将到来&#xff0c;快来一起做一个元旦倒计时分享给自己喜欢的人吧~ 效果图 网页直链 下面是可以直接访问的网页…

离散数学实践三判别图的连通性【JAVA实现】

文章目录思路重要算法&Warshall 算法代码全部代码效果展示思路 对于给定的邻接矩阵 A&#xff0c;可以用可达矩阵 Warshall 算法求出 A 所表示的图的可达矩阵 P。 对于可达矩阵 P 来说&#xff0c;如果 P 的所有元素均为 111&#xff0c;则所给的有向图是强连通的&#xf…

Python实现的一个简洁轻快的后台管理框架.支持拥有多用户组的RBAC管理后台,不用配置各种运行环境

Mini Admin 完整代码下载地址&#xff1a;Python实现的一个简洁轻快的后台管理框架.支持拥有多用户组的RBAC管理后台 Mini Admin,一个简洁轻快的后台管理框架.支持拥有多用户组的RBAC管理后台 &#x1f680; 应用场景&#xff1a;2-5人的管理团队&#xff0c;需要管理的资源数…

Mysql 慢日志处理

勿以恶小而为之&#xff0c;勿以善小而不为---- 刘备 有时候我们需要排查执行缓慢的SQL语句&#xff0c;这就用到了mysql慢查询日志。 开启慢查询日志的方式有两种&#xff1a;临时开启和永久开启。 开启慢查询日志功能可能需要mysql的版本达到5.7 查看版本号 select VERSI…

linux常用命令-路径切换及查看

切换路径-cd 我们可以使用cd&#xff08;change directory&#xff0c;切换目录&#xff09;的命令来进行目录切换 常规 其命令格式为 cd [相对路径或绝对路径] 例如&#xff1a; // 使用相对路径&#xff0c;切换到postfix目录下 cd ../postfix// 使用绝对路径切换到/var/…

centos7安装zabbix5.0

zabbix官网&#xff1a;https://www.zabbix.com/ 安装Zabbix存储库 rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm yum clean all安装Zabbix server&#xff0c;Web前端&#xff0c;agent yum install zabbix-server-mys…

2023年天津农学院专升本专业课考试考场安排与东西校区入校须知

天津农学院2023年高职升本科专业课考试考场安排等事宜的通知一、考试时间及考场分布情况天津农学院专升本专业课考试2022年12月31日上午在天津农学院东、西校区进行&#xff0c;每位考生请按照准考证上标注的地点参加考试即可&#xff0c;考场安排及考场分布图详见。天津农学院…

docker 安装mysql数据库

docker安装 如果不知道docker怎么安装的&#xff0c;请看docker安装教程 docker 安装mysql 拉取镜像 docker pull mysql:5.7在本地创建目录&#xff08;存放数据库文件&#xff09; 容器中的文件&#xff0c;映射到宿主机。 mkdir -p ./mysql/data ./mysql/logs ./mysql/…

FineRrport填报重复数据校验

参考&#xff1a; 校验填报页面的数据是否重复- FineReport帮助文档 - 全面的报表使用教程和学习资料 联立多字段校验是否与数据库中数据重复- FineReport帮助文档 - 全面的报表使用教程和学习资料 1、校验填报页面数据是否重复&#xff08;多列&#xff09; 1&#xff09…

Unity Recorder的使用讲解

Unity Recorder的使用讲解使用目的插件下载插件位置窗口基本介绍基本设置选项录制列表Animation Clip参数讲解Movie 电影模式参数介绍SourceGameViewTargeted Camera360ViewRender Texture AssetOutPut ReslutionInclude AudioFlip VerticalTexture SamplingFormatMedia File F…

智慧餐饮远程监控解决方案,让您吃的放心吃的安心

一、行业背景随着国民经济的提高&#xff0c;人们的生活水平也随之提升。近几年&#xff0c;食品安全问题频发&#xff0c;大家也开始对食品安全问题重点关注&#xff0c;尤其是食品生产企业、餐饮单位或学校食堂。自2014年开始&#xff0c;国家食品药品监督管理总局就以及开展…

Docker 概述

系列文章目录 文章目录系列文章目录前言Docker平台用Docker可以做什么Docker架构The Docker daemonThe Docker clientDocker DesktopDocker registriesDocker objectsImagesContainers总结前言 Docker是为开发、运行应用而生的开放的平台。Docker使你可以将应用从依赖中分离&a…

别在用BigDecimal给自己挖坑了!

前言 工作中&#xff0c;我们都会用到BigDecimal来进行金额计算&#xff0c;但是他有许多坑&#xff0c;可能针对新手不注意的话&#xff0c;就给自己多加几个bug了。一起来看看吧。 创建 new BigDecimal()还是BigDecimal#valueOf()&#xff1f; 创建对象的时候应该使用Big…

【Spring【IOC】】——15、使用@PropertySource加载配置文件

&#x1f4eb;作者简介&#xff1a;zhz小白 公众号&#xff1a;小白的Java进阶之路 专业技能&#xff1a; 1、Java基础&#xff0c;并精通多线程的开发&#xff0c;熟悉JVM原理 2、熟悉Java基础&#xff0c;并精通多线程的开发&#xff0c;熟悉JVM原理&#xff0c;具备⼀定的线…

Java8中Optional类入门-替代null避免冗杂的非空校验

场景 Java核心工具库Guava介绍以及Optional和Preconditions使用进行非空和数据校验&#xff1a; Java核心工具库Guava介绍以及Optional和Preconditions使用进行非空和数据校验_霸道流氓气质的博客-CSDN博客 上面在讲Guava时讲过Optional&#xff0c;下面做具体的入门示例讲解…

深度学习笔记:python的numpy和matplotlib库

1 numpy库 numpy为python数学计算库&#xff0c;里面的数组类提供大量便捷的数组和矩阵运算方法 创建numpy数组&#xff1a; import numpy as np x np.array([1.0, 2.0, 3.0])创建二维数组&#xff1a; import numpy as np a np.array([[1, 2], [3, 4]]) a.shape # outpu…

bWAPP靶场搭建——直接使用虚拟机镜像导入配置

一、bWAPP简介 bwapp是一款非常好用的免费的、开源漏洞演示学习平台;它有100多个网络错误&#xff01;且它涵盖了所有已知的主要web漏洞&#xff0c;包括OWASP Top 10项目的所有风险。 bWAPP是一个使用MySQL数据库的PHP应用程序&#xff1b;它可以通过Apache/IIS和MySQL托管在L…

优维低代码:关联微应用和Feature Flags 特性开关

优维低代码技术专栏&#xff0c;是一个全新的、技术为主的专栏&#xff0c;由优维技术委员会成员执笔&#xff0c;基于优维7年低代码技术研发及运维成果&#xff0c;主要介绍低代码相关的技术原理及架构逻辑&#xff0c;目的是给广大运维人提供一个技术交流与学习的平台。 连载…