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

1 模拟——67. 二进制求和

1 模拟

67. 二进制求和

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

示例 1:
输入:a = "11", b = "1"
输出:"100"
示例 2:
输入:a = "1010", b = "1011"
输出:"10101"

算法设计

可以从低位到高位(从后向前)计算,用一个变量carry记录进位,如果有字符没处理完或者有进位,则循环处理。两个字符串对应的位A、B相加,并加上进位,和值为sum = A + B + carry,进位carry = sum / 2,余数sum % 2作为结果。
例如,a = “1010”, b = “110”。
(1)初始时,进位carry=0,从低位开始计算,A=0,B=0,和值sum=A+B+carry=0。进位carry= sum / 2 = 0,余数作为结果sum % 2 = 0。
在这里插入图片描述
(2)从低位到高位继续处理,进位carry=0,A=1,B=1,和值sum=A+B+carry=2。进位carry= sum / 2 = 1,余数作为结果sum % 2 = 0。
在这里插入图片描述
(3)从低位到高位继续处理,进位carry=1,A=0,B=1,和值sum=A+B+carry=2。进位carry= sum / 2 = 1,余数作为结果sum % 2 = 0。
在这里插入图片描述
(4)从低位到高位继续处理,进位carry=1,A=0,此时第二个字符串已经处理完毕,按照0计算,B=0,和值sum=A+B+carry=2。进位carry = sum / 2 = 1,余数作为结果sum % 2 = 0。
在这里插入图片描述
(5)此时第两个字符串均已处理完毕,但是进位不为0,A=0,B=0,和值sum=A+B+carry=1。进位carry = sum / 2 = 0,余数作为结果sum % 2 = 1。
在这里插入图片描述
在算法实现中,可以将每次的计算结果转字符串,加上已计算结果,res = to_string(sum % 2) + res,最后返回字符串res。

算法实现

//LeetCode67 二进制求和 
string addBinary(string a, string b) {string res; // 返回结果 int carry = 0; // 进位 int i = a.size() - 1; // 从低位开始 int j = b.size() - 1;while (i >= 0 || j >= 0 || carry != 0) { // 有未处理完字符或者有进位 int A = i >= 0 ? a[i--] - '0' : 0;int B = j >= 0 ? b[j--] - '0' : 0;int sum = A + B + carry; // 和值 carry = sum / 2; // 商为进位 res = to_string(sum % 2) + res; // 余数转字符串,加上已计算结果 }return res;
}

算法分析

时间复杂度为O(max(n,m)),nm分别为两个二进制字符串的长度,空间复杂度为 O(1)。


http://www.mrgr.cn/news/21892.html

相关文章:

  • 安卓framework单屏幕Display秒双/多屏互动相关需求改进-wms实战开发
  • 4-4.Andorid Camera 之简化编码模板(获取摄像头 ID、选择最优预览尺寸)
  • 网络安全运维培训一般多少钱
  • AI学习指南深度学习篇-带动量的随机梯度下降法简介
  • java后端服务监控与告警:Prometheus与Grafana集成
  • 实时通信利器:Web Broadcast Channel API 全面解读
  • Java+Swing实现的五子棋游戏
  • 单GPU一分钟生成16K高清图像!新加坡国立发布LinFusion:无缝兼容Stable Diffusion插件
  • Ubuntu22.04回退系统内核
  • SQL的增删改查CRUD练习知识点(day27)
  • 一些数学经验总结——关于将原一元二次函数增加一些限制条件后最优结果的对比(主要针对公平关切相关的建模)
  • 《战锤40K:星际战士2》超越《黑神话》 登Steam热销榜首
  • 分布式锁-Redisson 可重入锁
  • 算法:判断一个整数是不是2的阶次方
  • win11如何录屏
  • Java | Leetcode Java题解之第392题判断子序列
  • 配置Microsoft Exchange接受域的详细指南
  • XGBoost算法-上
  • 什么是Kubernetes RBAC?
  • mac|安装nginx