首页 简历|笔试面试
您现在的位置:百分网 > 职场 > 笔试面试 > LeetCode

67.二进制求和

  • 25年9月4日 发布
  • 23.39KB 共2页
67.二进制求和67.二进制求和

67. 二进制求和

题意

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

难度

简单

示例

示例 1:

输入:a = "11", b = "1"

输出:"100"

示例 2:

输入:a = "1010", b = "1011"

输出:"10101"

分析

我们先前做过 002.两数相加,其实和本题差不多,只不过是把链表换成了字符串,把十

进制换成了二进制。

我们还是这样来做,从低位到高位依次将每个二进制数相加,并且记录相应的进位。十进

制是逢十进一,二进制则是逢二进一,把先前代码中的 10 用 2 替换即可。

class Solution {

public String addBinary(String a, String b) {

StringBuilder res = new StringBuilder();

int upper = 0;

for(int i = a.length() - 1,j = b.length() - 1;i >= 0 || j >= 0;i--,j--){

int nowPos = upper;

nowPos += i >= 0 ? a.charAt(i) - '0' : 0;

nowPos += j >= 0 ? b.charAt(j) - '0' : 0;

upper = nowPos / 2;

nowPos %= 2;

res.append(nowPos);

}

if(upper != 0)

res.append(upper);

res.reverse();

return res.toString();

}

}

别忘了,因为我们是从低位到高位来做的,所以必须要翻转一下,同时,要考虑最后一位

是否会产生进位,如果产生进位,同样需要将这个纳入答案当中。

1671508275695-e84a3d81-8e12-4e9b-9b60-749fdad61de8.png

总结

简单题,同样需要认真地对待,在一些时候,我们只有一次的提交机会,所以不能因为题

目简单,就轻视它,最终惩罚的还是我们自己。

力扣链接:https://leetcode.cn/problems/add-binary/

开通会员 本次下载免费

所有资料全部免费下载! 推荐用户付费下载获取返佣积分! 积分可以兑换商品!
一键复制 下载文档 联系客服