【力扣 67】二进制求和 C++题解(位运算+模拟+字符串+位集合)

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

示例 1:

输入:a = “11”, b = “1”
输出:“100”
示例 2:

输入:a = “1010”, b = “1011”
输出:“10101”

提示:

1 <= a.length, b.length <= 104
a 和 b 仅由字符 ‘0’ 或 ‘1’ 组成
字符串如果不是 “0” ,就不含前导零


思路

首先,如果输入的两个字符串中有一个为"0",那么直接返回另一个字符串,因为0加任何数都等于那个数。

然后,将两个输入字符串进行逆序,这样可以从最低位(字符串的第一个字符)开始进行二进制相加。

接下来,定义一个bitset变量,长度为10007,用于存储计算过程中的进位和结果。

在进行三个循环的过程中,通过比较字符是否等于’1’来将字符转换为布尔值。

第一个循环处理两个字符串共有的部分,即两个字符串都有字符的部分。在这个循环中,使用位运算符(&、|、^ )进行二进制加法运算,其中,"&“和”|“运算用于计算进位,”^"运算用于计算当前位的结果。

第二个和第三个循环处理两个字符串长度不等的情况,即只有一个字符串还有字符的部分。这两个循环的处理方式和第一个循环类似,只不过只需要处理一个字符串。

最后,将bitset转换为字符串,然后找到第一个非’0’字符的位置,从这个位置开始,截取字符串的剩余部分,这就是最终的结果。


AC代码

/** @lc app=leetcode.cn id=67 lang=cpp** [67] 二进制求和*/// @lc code=start
class Solution {public:string addBinary(string a, string b) {if (a == "0") {return b;}if (b == "0") {return a;}reverse(a.begin(), a.end());reverse(b.begin(), b.end());const int N = 1e4 + 7;bitset<N> bs;int i;for (i = 0; i < a.length() && i < b.length(); i++) {bool x = a[i] == '1';bool y = b[i] == '1';bs[i + 1] = (x & y) | (bs[i] & (x ^ y));bs[i] = x ^ y ^ bs[i];}for (; i < a.length(); i++) {bool x = a[i] == '1';bool y = bs[i];bs[i + 1] = x & y;bs[i] = x ^ y;}for (; i < b.length(); i++) {bool x = b[i] == '1';bool y = bs[i];bs[i + 1] = x & y;bs[i] = x ^ y;}string c0 = bs.to_string();int index = c0.find_first_not_of('0');string c = c0.substr(index);return c;}
};
// @lc code=end

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

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

相关文章

网神 SecGate 3600 防火墙 route_ispinfo_import_save 文件上传漏洞

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

Golang 基础 Go Modules包管理

Golang 基础 Go Modules包管理 在 Go 项目开发中&#xff0c;依赖包管理是一个非常重要的内容&#xff0c;依赖包处理不好&#xff0c;就会导致编译失败&#xff0c;本文将系统介绍下 Go 的依赖包管理工具。 我会首先介绍下 Go 依赖包管理工具的历史&#xff0c;并详细介绍下…

LeetCode动态规划的解题思路

动态规划 动态规划&#xff0c;其实就是找规律&#xff0c;总结公式/方程。 动态规划&#xff0c;类似于数学归纳法。 关键的思想在「自底向上」和「空间换时间」。 动态规划&#xff0c;可以使用一维数组&#xff0c;有时也会用到二维数组。 应用场景 “动态规划”可以用于…

idea2023创建spring项目无法选择Java8

idea2023创建spring项目无法选择Java8 今天下载了新版的idea 2023.3.2&#xff0c;但是在创建springboot项目的时候只能选择Java17和Java21&#xff0c;没法选择其他的版本。 使用下面阿里云的地址替换Server URL中的start.spring.io的地址即可 https://start.aliyun.com/替…

C#调用WechatOCR.exe实现本地OCR文字识别

最近遇到一个需求&#xff1a;有大量的扫描件需要还原为可编辑的文本&#xff0c;很显然需要用到图片OCR识别为文字技术。本来以为这个技术很普遍的&#xff0c;结果用了几个开源库&#xff0c;效果不理想。后来&#xff0c;用了取巧的方法&#xff0c;直接使用了WX的OCR识别模…

Linux大集合

Linux Linux是什么&#xff1f; Linux是一套免费使用和自由传播的类Unix操作系统&#xff0c;是一个基于POSIX和UNIX的多用户、多任务、 支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和 64位硬件。 Linux内核 是一个Linux系统…

可达鸭二月月赛——入门赛第四场T3题解

姓名 王胤皓 AC 记录 题目&#xff1a; 思路 用数组进行操作太难&#xff0c;而这些操作可以再 STL 中的 vector 容器&#xff0c;有 insert 和 erase 函数&#xff0c;所以非常方便。 vector 下标从 0 0 0 开始&#xff0c;所以所有操作都要 − 1 -1 −1。 操作 1 1 1 …

Redis的数据类型Hash使用场景实战

Redis的数据类型Hash使用场景 常见面试题&#xff1a;redis在你们项目中是怎么用的&#xff0c;除了String数据类型还使用什么数据类型&#xff1f; 怎么保证缓存和数据一致性等问题… Hash模型使用场景 知识回顾&#xff1a; redisTemplate.opsForHash() 方法是 Redis 的 …

Spring Boot3整合Redis

⛰️个人主页: 蒾酒 &#x1f525;系列专栏&#xff1a;《spring boot实战》 &#x1f30a;山高路远&#xff0c;行路漫漫&#xff0c;终有归途。 目录 前置条件 1.导依赖 2.配置连接信息以及连接池参数 3.配置序列化方式 4.编写测试 前置条件 已经初始化好一个spr…

MyBatisPlus基础操作之增删改查

目录 一、基本使用 1.1 插入数据 1.2 删除操作 1.3 更新操作 二、条件构造器Wrapper 2.1 常用AbstractWrapper方法 2.1.1 示例一 2.2.2 示例二 2.2.3 示例三 2.2 常用QueryWrapper方法 2.2.1 示例一 2.2.2 示例二 2.2.3 示例三&#xff08;常用&#xff09; 2.3 常…

【春节特辑】回顾与展望:运维软件领域的2023与2024

随着信息技术的飞速发展&#xff0c;运维软件领域在过去的一年里取得了显著进步&#xff0c;不仅提升了系统的稳定性与安全性&#xff0c;还为企业带来了更高的效率和更低的成本。同时&#xff0c;面对快速变化的市场环境和用户需求&#xff0c;运维软件也在不断创新与进化&…

linux系统非关系型数据库memcached

memcached 特点原理配置安装Memcached 特点 内置内存存储方式-----------为了提高性能&#xff0c;memcached中保存的数据都存储在memcache内置的内存存储空间中。由于数据仅存在于内存中&#xff0c;重启操作系统会导致全部数据消失简单key/value存储---------------服务器不…

1978-2022年地级市全要素生产率数据

1978-2022年地级市全要素生产率数据 1、时间&#xff1a;1978-2022年 2、来源&#xff1a;城市统计年鉴以及各省市的统计年鉴 3、指标&#xff1a;省份、地区、年份、OLS、FE、RE、DGMM、SGMM、SFA1、SFA2、SFA3、SFA3D、TFE、非参数法 4、范围&#xff1a;421地区 5、参考…

Deepin基本环境查看(八)【系统安全:房、车、查房、查车】

Deepin基本环境查看&#xff08;八&#xff09;【系统安全&#xff1a;房、车、查房、查车】 - 相关文章目录1、概述2、想象中的... 现实中的...1&#xff09;想象中的我2&#xff09;梦幻中的我3&#xff09;现实中的我 3 要房、要车、还是房车都要1&#xff09;超级计算机2&a…

Pymysql之Connection中常用API

Connection中常用API 1、open() &#xff1a;检测数据库是否连接。 connect.open&#xff1a;如果数据库连接返回Trhe&#xff0c;否则返回False。 2、ping(reconnectTrue) connect.ping(reconnectTrue):如果reconnectTrue表示连接断开后&#xff0c;重新进行连接。 import…

Docker-Learn(三)创建镜像Docker(换源)

根据之前的内容基础&#xff0c;本小点的内容主要涉及到的内容是比较重要的文本Dockerfile 1. 编辑Dockerfile 启动命令行终端&#xff08;在自己的工作空间当中&#xff09;,创建和编辑Dockerfile。 vim Dockerfile然后写入以下内容 # 使用一个基础镜像 FROM ubuntu:late…

前端代码评审规范

前端代码评审规范 代码千万行&#xff0c;安全第一行&#xff1b;代码不规范&#xff0c;维护两行泪。阅读规范前&#xff0c;请先阅读项目自带的README.md&#xff0c;配置好项目代码统一的格式检查。 一、代码规范 1. 文件规范 1.1 文件目录模块划分 1.1.1 文件创建原则…

Vscode SSH使用云服务器访问内网主机

Vscode SSH使用云服务器访问内网主机 云服务器在配置策略中开放使用到的端口号&#xff0c;比如250和251作为使用。 首先在内网主机上使用ssh-copy-id root云服务器公网IP&#xff0c;将内网主机的公钥放到服务器上 这一步必须完成&#xff0c;不然下面的命令无法成功建立隧…

Centos8保姆级安装教程

1.下载地址 Downloadhttps://www.centos.org/download/ 2.安装教程 第一步创建新的虚拟机 第二步自定义高级 第三步这里是选择系统的兼容性&#xff0c;默认就可以 之后直接下一步 第四步选择稍后安装操作系统 之后点击下一步 第五步选择操作系统Linux 安装的是centos8 64位…

MySQL的MVCC机制

MVCC机制 使用MVCC(Multi-Version Concurrency Control&#xff0c;多版本的并发控制协议)机制来实现可重复读(REPEATABLE READ)的隔离级别 MVCC最大的优点是读不加锁&#xff0c;因此读写不冲突&#xff0c;并发性能好。InnoDB实现MVCC&#xff0c;是通过保存数据在某个时间点…