Leetcode67---二进制求和

https://leetcode.cn/problems/add-binary/description/

给出的两个二进制,我们可以从最后开始往前运算。

给当前短的一位前面补充0即可。

c 复制代码
class Solution {
    public String addBinary(String a, String b) {
      //给的就是二进制字符串 最后一位开始遍历  如果没有就补充0?
    StringBuilder sb = new StringBuilder();
     int  ca=0;
     //和链表的两数相加类似   i>=0 如果下标小于了0就给当前的补充0即可。
     for(int i=a.length()-1,j=b.length()-1;i>=0||j>=0;i--,j--){
        int sum=ca;
        sum+=i>=0?a.charAt(i)-'0':0;
        sum+=j>=0?b.charAt(j)-'0':0;
        sb.append(sum%2);
        ca=sum/2;
     }
     sb.append(ca==1?ca:"");
     return sb.reverse().toString();
    }
}

通过 i>=0||j>=0 保证最长的运算完成。

通过i>=0,来给短的那一个补充0.

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

sb.append() sum和2进行取模,因为二进制满2就需要往前进一个。

最后的ca如果是前一位进上来为1,那么还要添加上去。

最后反转即可。

相关推荐
We་ct几秒前
LeetCode 56. 合并区间:区间重叠问题的核心解法与代码解析
前端·算法·leetcode·typescript
金牌归来发现妻女流落街头6 分钟前
【从SpringBoot到SpringCloud】
java·spring boot·spring cloud
毅炼6 分钟前
Java 基础常见问题总结(4)
java·后端
GR23423418 分钟前
2025年影视仓TV+手机官方版 内置地址源支持高清直播
java·智能手机·软件
程序员清风41 分钟前
北京回长沙了,简单谈谈感受!
java·后端·面试
何中应1 小时前
请求头设置没有生效
java·后端
亓才孓1 小时前
[JDBC]批处理
java
春日见1 小时前
车辆动力学:前后轮车轴
java·开发语言·驱动开发·docker·计算机外设
宋小黑1 小时前
JDK 6到25 全版本网盘合集 (Windows + Mac + Linux)
java·后端
7哥♡ۣۖᝰꫛꫀꪝۣℋ2 小时前
Spring-cloud\Eureka
java·spring·微服务·eureka