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

67. 二进制求和

目录

一、问题描述

二、解题思路

三、代码

四、复杂度分析


一、问题描述

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

二、解题思路

  1. 反向遍历:二进制加法从最低位(右端)开始计算

  2. 进位处理:每位相加结果可能产生进位,需保存至下一位计算

  3. 统一处理:当两字符串长度不同时,短字符串高位视为0

  4. 结果拼接:计算结果按低位到高位顺序生成,需反转得到最终结果

三、代码

class Solution {
public:string addBinary(string a, string b) {int i = a.size() - 1,j = b.size() - 1;          //初始化指针,使其指向字符串a和b的末尾int carry = 0;                                  //进位值(0|1)string result;                                  //存储计算结果//当任意字符串有未处理的位或存在进位时继续循环while(i >= 0 || j >= 0 || carry > 0){//获取当前位的值(若指针越界则视为0)int a_val = (i >= 0) ? a[i--] - '0' : 0;      //字符转数字后指针左移int b_val = (j >= 0) ? b[j--] - '0' : 0;int sum = a_val + b_val + carry;              //计算当前位的总和(包含进位)result.push_back((sum % 2) + '0');            //取模得当前位置,转字符存入结果carry = sum / 2;                              //计算新的进位}reverse(result.begin(),result.end());             //反转字符串,得到高位在前的结果return result;}
};

四、复杂度分析

时间复杂度:O(max(M, N)),其中 M 和 N 分别为字符串 a 和 b 的长度。需要遍历两个字符串的全部位数。
空间复杂度:O(max(M, N)),存储结果的字符串长度最多为 max(M, N) + 1(进位情况)

相关文章:

  • MongoServerError: Authentication failed.处理办法
  • 利用 Java 爬虫按关键字搜索淘宝商品
  • ServletContextListener 的用法笔记250417
  • 第十七届“华中杯”B 题校园共享单车的调度与维护问题分析
  • 第九章:强化学习(RL)赋能 AI Agents:潜力、挑战与问题建模
  • 【MCP】第一篇:MCP协议深度解析——大模型时代的“神经连接层“架构揭秘
  • 极狐GitLab 安全文件管理功能介绍
  • C++纯虚函数
  • 05-libVLC的视频播放器:设置倍速播放
  • C# 数据类型||C# 类型转换
  • 【Rust基础】使用Rocket构建基于SSE的流式回复
  • 借源网荷储之力,开启低碳园区 “绿色蝶变”
  • 优选算法系列(7.BFS 解决最短路问题)
  • RMSIN论文阅读
  • 日本留学常用的学习软件:开启你的国际化学术之旅
  • 判断一个整数是否为素数
  • 如何深入理解引用监视器,安全标识以及访问控制模型与资产安全之间的关系
  • 安全可靠+操作简捷——安科瑞预付费电表的用户体验升级
  • 《前端性能优化秘籍:打造极致用户体验》
  • Unity ShaderLab引用HLSL文件找不到其中函数
  • 《一鸣惊人》五一特别节目:以戏曲为桥梁,展现劳动者的坚守
  • 国铁集团:5月1日全国铁路预计发送旅客2250万人次
  • “译通天下·言立寰宇”:华东师大翻译家的精神传承
  • 空调+零食助顶级赛马备战,上海环球马术冠军赛即将焕新登场
  • 韩国检方结束对尹锡悦私宅的扣押搜查
  • 澎湃回声丨23岁小伙“被精神病”8年续:今日将被移出“重精”管理系统