《剑指 Offer》专项突破版 - 面试题 2 : 二进制加法(C++实现)

题目链接:67. 二进制求和 - 力扣(LeetCode)

题目

输入两个表示二进制的字符串,计算它们的和,并以二进制字符串的形式输出。例如,输入的二进制字符串分别是 "11" 和 "10",则输出 "101"。

分析

有不少人看到这个题目的第一反应是将二进制字符串转换成 int 型整数或 long 型整数,然后把两个整数相加得到和之后再将和转换成二进制字符串。例如,将二进制字符串 "11" 转换成 3,"10" 转换成 2,两个整数的和为 5,将之转换成二进制字符串就得到 "101"。这种解法可能会导致溢出。这个题目没有限制二进制字符串的长度。当二进制字符串比较长时,它表示的整数可能会超出 int 型整数或 long 型整数的范围,此时不能直接将其转换成整数

因此,加法操作只能针对两个字符串进行。可以参照十进制加法来完成二进制加法。在进行十进制加法时,总是将两个数字的右端对齐,然后从它们的个位开始从右向左相加同一位置的两个数位,如果前一位有进位还要加上进位。

二进制加法也可以采用类似的方法,从字符串的右端出发向左做加法。与十进制不同的是,二进制是逢二进一,当两个数位加起来等于 2 时就会产生进位。

代码实现

class Solution {
public:string addBinary(string a, string b) {string result;int end1 = a.size() - 1, end2 = b.size() - 1;int carry = 0;  // 进位while (end1 >= 0 || end2 >= 0){int digitA = end1 >= 0 ? a[end1--] - '0' : 0;int digitB = end2 >= 0 ? b[end2--] - '0' : 0;int sum = digitA + digitB + carry;result += (sum >= 2 ? sum - 2 : sum) + '0';carry = sum >= 2 ? 1 : 0;}
​if (carry == 1)result += carry + '0';
​reverse(result.begin(), result.end());return result;}
};

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

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

相关文章

题目:最大数组和(蓝桥OJ 3260)

问题描述: 解题思路: 官方: 总结:使用模拟。排序数组,枚举删除最大个数并推出其删除最小个数 ,即可枚举出每一种可能的区间和,依次比较找最大区间和(使用前缀和求区间和O(1)…

MySQL数据管理(一)

一、列类型 列类型指规定数据库中该列存放的数据类型 列类型分类 数值类型字符串类型日期和时间型数值类型 数值类型 字符串类型 日期和时间类型 MySQL允许“不严格”语法,任何标点符号都可以作为日期部分之间的间隔符,如“24-01-03”、“24.01.03”…

Qt设置的字体加粗、下划线、斜体、字号,字体

加粗 void MainWindow::on_checkbox_Bold_stateChanged(int arg1) {ui->textEdit->selectAll();QTextCharFormat fmt ui->textEdit->currentCharFormat();if(arg1 Qt::Checked){fmt.setFontWeight(QFont::Bold);}else{fmt.setFontWeight(QFont::Normal);}ui->…

MindOpt APL建模语言自定小义函数的重要性和示例

在编程和建模语言中,函数是一段独立的、可重复使用的代码块,用于执行特定任务。在MindOpt APL中,自定义函数的使用非常重要,因为它们提高了建模过程的效率、可读性和灵活性。 为何使用def自定义函数: 可重用性&#…

vue3组件数据双向绑定

1.双向绑定传递基本数据类型 父组件 <template><div><test v-model"searchText"/><p>父组件值&#xff1a;{{ searchText }}</p></div> </template><script setup langts> import { ref } from vue import test f…

SSM建材商城网站----计算机毕业设计

项目介绍 本项目分为前后台&#xff0c;前台为普通用户登录&#xff0c;后台为管理员登录&#xff1b; 管理员角色包含以下功能&#xff1a; 管理员登录,管理员管理,注册用户管理,新闻公告管理,建材类型管理,配货点管理,建材商品管理,建材订单管理,建材评价管理等功能。 用…

213.【2023年华为OD机试真题(C卷)】智能成绩表(排序题-JavaPythonC++JS实现)

🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目-智能成绩表二.解题思路三.题解代码Python题解代…

VCoder:大语言模型的眼睛

简介 VCoder的一个视觉编码器&#xff0c;能够帮助MLLM更好地理解和分析图像内容。提高模型在识别图像中的对象、理解图像场景方面的能力。它可以帮助模型显示图片中不同物体的轮廓或深度图&#xff08;显示物体距离相机的远近&#xff09;。还能更准确的理解图片中的物体是什…

C#如何将本地文件上传至阿里云OSS中

要想将文件上传至OSS&#xff0c;那么阿里云的AccessKeyId和AccessKeySecret必不可少 一.去哪找AccessKeyId和AccessKeySecret 进入阿里云工作台&#xff0c;点击右上角头像&#xff0c;选择AccessKey管理&#xff0c;就能看到ID了 但是Secret目前阿里云不支持查看了&#xf…

labelme读取文件顺序

labelme版本4.5.10 labelme的目录结构 labelme通过在__main__.py中调用app.py&#xff0c;启动程序读取文件列表的部分在app.py的imageList函数中 def imageList(self):lst []for i in range(self.fileListWidget.count()):item self.fileListWidget.item(i)lst.append(ite…

Java学习笔记基础知识

一.数据类型 1.基本数据类型 基本数据类型 大小 范围 byte(字节整型) 1byte(8bit) -128(-2^7)~127(2^7-1) short(短整型) 2byte -2^15~2^15-1 int(整型) 4byte -2^31~2^31-1 long(长整型) 8byte -2^63~2^63-1 float(单精度浮点数) 4byte -3.4E38~3.4E38 double(双精度浮…

lua配置表优化以及元表

table1 {[100] {Hung 0,IDType 7,InitMapID 10000,Name "荣誉阶梯",Timeout 0},[101] {Hung 0,IDType 0,InitMapID 10100,MinLv 50,Name "盘山道",NumEveryDay 1,PworldID 101,Timeout 1200,Type 2} }local __default_values {Cheats …

【SpringCloud】5、Spring Cloud Gateway网关路由规则

Spring Cloud Gateway 创建 Route 对象时, 使用 RoutePredicateFactory 创建 Predicate 对象,Predicate 对象可以赋值给 Route。 Spring Cloud Gateway包含许多内置的Route Predicate Factories。所有这些断言都匹配 HTTP 请求的不同属性。多个 Route Predicate Factories 可…

应用系统如何集成和扩展开源工作流引擎

目前主流的开源流程引擎有activiti、flowable、camunda等&#xff0c;这几个开源流程引擎的版本很多&#xff0c;哪个开源流程引擎哪个版本的功能更多、性能更好&#xff0c;该如何选择请参考&#xff1a;https://lowcode.blog.csdn.net/article/details/116405594 无论您选择…

AR技术改变汽车行业,AR看车、AR车书、AR售后维修震撼登场!

引言&#xff1a; 随着中国汽车市场步入存量发展阶段&#xff0c;车企正迎来新的机遇和挑战。这一发展意味着庞大的汽车后市场需求&#xff0c;同时也要求企业和经销商能够快速响应市场需求&#xff0c;提供高质量的服务。而培养具备全面技能的成熟售后服务人员需要企业投入大…

java基础之---动态代理

1、代理是什么&#xff1f; 在不改变源代码的情况下&#xff0c;对类进行了功能等扩展。在代理类的前后方法添加任何你想要添加的内容。 2、静态代理跟动态代理区别 静态代理是在编译期确定。 动态代理需要在运行期确定的。反射是动态代理的一种。经常被用在框架中&#xff…

HubSpot电子邮件:数字化时代的营销利器

在当今数字化时代&#xff0c;电子邮件仍然是企业与客户之间沟通的重要手段之一。而HubSpot电子邮件作为HubSpot全方位解决方案的一部分&#xff0c;不仅简化了营销流程&#xff0c;更为企业提供了强大的工具&#xff0c;助力建立更紧密的客户关系。本文将深入探讨HubSpot电子邮…

vs2019+qt+opencv+open3d

开发环境 VS 2019, 一开始用这个&#xff0c;后来就一直用了Qt 5.9.9, Qt Creator&#xff0c;有一个项目是用这个版本开发的&#xff0c;所以我后来也沿用这个版本opencv 3.4.5, 有一项功能必须这个版本才能使用open3d 0.15.2&#xff0c; 曾经编译了这个版本&#xff0c;后面…

深度学习在工地安全帽识别技术的应用与展望

当我们谈论“工地安全帽识别”时&#xff0c;实际上我们在探讨的是如何利用深度学习图像识别技术来提高建筑工地的安全性。这一技术的应用可以显著提高工地安全管理的效率和有效性&#xff0c;是现代建筑工程管理中不可或缺的一部分。以测评的北京富维图像的工地安全帽识别为例…

小兔鲜儿 uniapp - SKU 模块

目录 存货单位&#xff08;SKU&#xff09;​ 插件市场​ 下载 SKU 插件​ 使用 SKU 插件​ 插件类型问题​ 核心业务​ 渲染商品规格​ 打开弹窗交互​ 渲染被选中的值​ 存货单位&#xff08;SKU&#xff09;​ SKU 概念 存货单位&#xff08;Stock Keeping Unit&a…