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

LeetCode 面试经典150题 67.二进制求和

415.字符串相加  思路一模一样

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

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

思路:从右开始遍历两个字符串,因为右边是低位先运算。如果其中一个字符串遍历完就补0。

while (i >= 0 || j >= 0 || carry != 0)  中 carry != 0 主要是解决最后有进位的情况,特别注意!

最后记得把字符串反转,因为先把低位运算结果存储起来了。

代码

class Solution {public String addBinary(String a, String b) {StringBuilder res =  new StringBuilder(); // 要返回的结果int i = a.length() - 1;int j = b.length() - 1;int carry  = 0; // 进位while (i >= 0 || j >= 0 || carry != 0) {int digitA = i >= 0 ? a.charAt(i) - '0' : 0;  // 当前a的取值int digitB = j >= 0 ? b.charAt(j) - '0' : 0;  // 当前b的取值int sum = digitA + digitB + carry;  // 当前位置相加的结果carry = sum >= 2 ? 1 : 0;sum = sum % 2;res.append(sum);i--;j--;}return res.reverse().toString(); // 把结果反转并返回}
}

性能

时间复杂度O(max(M,N)M,N分别是字符串a b的长度)

空间复杂度O(1)

http://www.lryc.cn/news/442525.html

相关文章:

  • Dell PowerEdge 网络恢复笔记
  • Java面试——集合篇
  • 算法【双向广搜】
  • javascript检测数据类型的方法
  • 生信初学者教程(五):R语言基础
  • 深度学习计算
  • Hexo博客私有部署Twikoo评论系统并迁移评论记录(自定义邮件回复模板)
  • Vue.js 与 Flask/Django 后端配合:构建现代 Web 应用的最佳实践
  • 【笔记】自动驾驶预测与决策规划_Part3_路径与轨迹规划
  • Shiro-721—漏洞分析(CVE-2019-12422)
  • 【Python语言初识(一)】
  • Python 中的方法解析顺序(MRO)
  • MySQL表的内外连接
  • 系统架构设计师:软件架构的演化和维护
  • QT的dropEvent函数进入不了
  • Spring Boot 入门
  • LDD学习2--Scull(TODO)
  • 【算法-堆排序】
  • 音视频入门基础:AAC专题(4)——ADTS格式的AAC裸流实例分析
  • 【第33章】Spring Cloud之SkyWalking服务链路追踪
  • 如何选择OS--Linux不同Distribution的选用
  • cesium效果不酷炫怎么办--增加渲染器
  • 计算机网络:概述 --- 体系结构
  • DEPLOT: One-shot visual language reasoning by plot-to-table translation论文阅读
  • 从 HDFS 迁移到 MinIO 企业对象存储
  • Rust 常见问题汇总
  • java泛型类与泛型方法
  • Android String资源文件中,空格、换行以及特殊字符如何表示
  • CUDA及GPU学习资源汇总
  • uniapp vue3 梯形选项卡组件