题目:

输入两个表示二进制的字符串,计算它们的和,并以二进制字符串的形式输出。例如,输入的二进制字符串分别是“11”和“10”,则输出“101”

leetcode题目连接:https://leetcode.cn/problems/JFETK5/

分析:

二进制加法可以参照十进制加法的竖式,右端对齐,满2进1

Java代码实现:

class Solution {public String addBinary(String a, String b) {StringBuilder result = new StringBuilder(); int i = a.length()-1;int j = b.length()-1;int carry = 0; //定义进位值while(i >= 0 || j >= 0){ //保证两个数都遍历到int digitA = i >= 0 ? a.charAt(i--) - '0':0; //当位数较短的那个数遍历完,i会变成-1,此时把-1位置的值当0处理int digitB = j >= 0 ? b.charAt(j--) - '0':0;//同上int sum = digitA + digitB + carry;carry = sum >= 2 ? 1 : 0; //若sum满2则进1,carry即为1,否则不进为0sum = sum >= 2 ? sum - 2 : sum; //sum满进2进1,即该位置sum-2result.append(sum); }if(carry == 1){result.append(1);}return result.reverse().toString(); //倒叙排列}
}

注意:

1、a.charAt(i--) - '0'作用是把字符型转化为int型

2、append()方法

StringBuffer类包含append()方法,append()方法相当于“+”,将指定的字符串追加到此字符序列;StringBuffer.append()追加的字符串在同一个内存地址

reverse()方法用于反转StringBuilder中的字符

复杂度分析:

时间复杂度:O(n)

空间复杂度:O(1)

结果:

​​​​​​​

以上为个人做题笔记,很多是自己的理解,若有错误还请各位大佬指出~

【剑指Offer(专项突破)】002. 二进制加法(Java实现) 详细解析相关推荐

  1. LeetCode刷题 _「剑指 Offer]专项突破版

    第01天 整数 剑指 Offer II 001. 整数除法 class Solution:# 时间复杂度:O(logn), 空间复杂度:O(1)def divideCore(self, dividen ...

  2. 剑指Offer专项突破版(58)—— 日程表

    题目 剑指 Offer II 058. 日程表 思路 假设现在已经有一堆互不冲突的日程了,此时需要新增一个日程k,其开始时间为start,结束时间为end,怎么判断是否和已有的日程冲突呢? 先考虑所有 ...

  3. 剑指offer 专项突破版 79、所有子集

    题目链接 思路一:回溯 对于这种可以分为若干步,每一步有很多选择的题目非常适合用回溯法来做. 具体的方式为写一个helper函数,参数为当前的结果集合subset,当前选择的数字的索引index. 首 ...

  4. 剑指offer 专项突破版 74、合并区间

    题目链接 思路 注意合并区间的规则是,对于有重合的区间直接合并(重合意味着某一个区间的头部在另一个区间之中) 所以我们可以先把区间按照区间头排序,然后再挨个判断是否重合~ 注意具体的写法 class ...

  5. 剑指offer 专项突破版 78、合并排序链表

    题目链接 思路 最初的思路是上一题既然实现了归并两个链表,那么我们可以挨个归并~ 归并n-1次就可以,但是这样时间复杂度为O(k²n) class Solution {public ListNode ...

  6. 剑指offer 专项突破版 73、狒狒吃香蕉

    题目链接 思路 这个也是范围内的查找,一开始可以确定狒狒的速度区间应该是[1,maxVal],但是有两个细节需要注意 如何通过piles数组和speed计算时间 result += (pile + s ...

  7. 剑指offer专项突破版

    面试题1:整除除法 力扣连接:https://leetcode-cn.com/problems/xoh6Oh/submissions/ 题目描述 输入两个int型整数,它们进行除法计算并返回商,要求不 ...

  8. java 加法不用_【Java】 剑指offer(65) 不用加减乘除做加法

    本文参考自<剑指offer>一书,代码采用Java语言. 题目 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.×.÷四则运算符号. 思路 对数字做运算,除了四则运算外,只剩下位 ...

  9. 【LeetCode】剑指 Offer 65. 不用加减乘除做加法

    [LeetCode]剑指 Offer 65. 不用加减乘除做加法 文章目录 [LeetCode]剑指 Offer 65. 不用加减乘除做加法 一.位运算 一.位运算 本题考察对位运算的灵活使用,即使用 ...

最新文章

  1. Windows下Git的安装
  2. ylb:子查询(嵌套子查询)和子查询(相关子查询)
  3. CodeForces - 897E Willem, Chtholly and Seniorious(珂朵莉树)
  4. 二叉树题目----2 检查两颗树是否相同 和 对称二叉树的判定
  5. Linux串口编程详解
  6. H.264学习--1
  7. oracle乱码函数,jfinal oracle操作时decode函数填值乱码 求助什么原因????
  8. xlrd合并单元格的读取的注意事项
  9. 《那些年啊,那些事——一个程序员的奋斗史》——37
  10. rpm apache2 啟動vhost .htaccess讀取問題
  11. struts2+spring+hibernte整合示例
  12. 【python】导入自定义模块
  13. Mac系统用命令打开ping端口的方法
  14. vSphere配置NSX Edge网络
  15. Android实现记账本(麻雀虽小,五脏俱全)
  16. IDEA 奇淫 插件
  17. 2022年京东平台休闲食品的年度总销量超6亿件,同比增长6.5%
  18. 几何矩的物理意义,由Camshift算法引起
  19. 【蓝桥杯】【Python】次数差
  20. js 时间格式Wed Mar 22 13:38:37 CST 2022 转为yyyy-mm-dd

热门文章

  1. SIGIR2022论文筛选
  2. Spring Sercurity在Spring Boot 中的使用
  3. 【二】2D测量 Metrology——set_metrology_model_param()算子
  4. 小程序 php 微信运动步数
  5. Snort规则入门学习
  6. MAC解压软件推荐——全能解压
  7. NLP自然语言处理系列——LDA主题词模型探析
  8. dede后台登陆又返回登陆界面怎么办
  9. Java线上问题排查系列--后端接口响应慢的排查方法及解决方案
  10. CSS布局之两列布局