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

【C++算法】63.字符串_二进制求和

文章目录

    • 题目链接:
    • 题目描述:
    • 解法
    • C++ 算法代码:


题目链接:

67. 二进制求和


题目描述:

cd325ec00d0f8d4f7ea6ecb8b4d4e92f


解法

高精度加法

解法:模拟列竖式运算


C++ 算法代码:

class Solution 
{
public:string addBinary(string a, string b) {// 二进制字符串相加算法// 基本思路:从右到左(低位到高位)逐位相加,处理进位,类似于手工计算string ret;            // 存储结果的字符串int cur1 = a.size() - 1;  // 指向字符串a的最后一位(最低位)int cur2 = b.size() - 1;  // 指向字符串b的最后一位(最低位)int t = 0;            // 进位值,初始为0// 循环条件:只要a、b还有位没处理完,或者还有进位,就继续计算while(cur1 >= 0 || cur2 >= 0 || t){// 如果a还有未处理的位,将其转为数字并加入当前位的计算// 注意:字符'0'的ASCII值是48,'1'的ASCII值是49,所以减去'0'可以得到数字值if(cur1 >= 0) t += a[cur1--] - '0';// 如果b还有未处理的位,将其转为数字并加入当前位的计算if(cur2 >= 0) t += b[cur2--] - '0';// 当前位的结果是t对2取余(0或1),加上'0'转回字符ret += t % 2 + '0';// t除以2得到进位值(0或1)t /= 2;}// 由于计算是从低位到高位,但添加到ret是从左到右,所以需要反转结果reverse(ret.begin(), ret.end());return ret;}
};
http://www.xdnf.cn/news/584.html

相关文章:

  • 深度解析AI大模型中的模型微调技术:从基础到实践
  • 知识就是力量——一些硬件的使用方式
  • 第二十七讲:AI+农学导论
  • Python基于知识图谱的医疗问答系统【附源码、文档说明】
  • python基础知识点(3)
  • JAVA学习-多线程
  • linux查看目录相关命令
  • Linux系统中的网络传输、网络管理以及软件仓库的构建
  • @EnableAsync+@Async源码学习笔记之四
  • 2025年第十五届MathorCup数学应用挑战赛D题论文全网首发
  • MSCKF——运动方程IMU状态递推(Propagation)
  • 深度补全网络:CSPN++ 有哪些开源项目
  • 2025华中杯挑战赛B题【单车调度】原创论文讲解
  • docker 搭建nacos 2.2.1版本单机版
  • 国产SMT贴片机自主技术突破解析
  • A股周度复盘与下周策略 的deepseek提示词模板
  • Unreal 从入门到精通之如何接入MQTT
  • 【开发心得】Dify部署ollama模型的坑[8]
  • 【漫话机器学习系列】210.标准化(Standardization)
  • [Java · 初窥门径] Java 注释符
  • DEV-c++怎么免打头文件中英文切换
  • c语言中的原,反,补码
  • PyTorch 深度学习实战(38):注意力机制全面解析(从Seq2Seq到Transformer)
  • “劣币驱逐良币”与“U型锁”刍议
  • Linux中的软件管理
  • 解决Windows update服务启动拒绝访问的问题 | wuauserv 注册表拒绝访问的方法
  • Sleuth+Zipkin 服务链路追踪
  • 四级英语备考指南
  • 信息量、香农熵、交叉熵、KL散度总结
  • PowerBi中DATEDIFF怎么使用?