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,那么还要添加上去。

最后反转即可。

相关推荐
ZealSinger4 分钟前
LangChain4j用AiServices拼Tool
java·rag·ai智能体·langchain4j
vx_Biye_Design12 分钟前
springboot高校选课系统82776-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·课程设计·express
Sweet锦1 小时前
不调 Python,不装向量库:我用纯 Java 写了一套以图搜图引擎
java·人工智能·开源·图搜索
Rnan-prince2 小时前
LeetCode 股票买卖系列:一个动态规划状态机模板通吃四题
leetcode·动态规划
如意猴2 小时前
【C++】007 C/C++ 内存管理机制、malloc与new的区别及模板初阶
java·c++·算法
可乐鸡翅yeah_2 小时前
HLS 分片过期清理,直播旧 TS 分片磁盘爆满问题处理
java·后端·spring·m3u8·m3u8在线·音视频在线播放
圣保罗的大教堂2 小时前
leetcode 3756. 连接非零数字并乘以其数字和 II 中等
leetcode
专业程序开发源3 小时前
SSM校园拍摄交流服务平台36936-计算机课程设计、毕业设计
java·spring boot·后端·python·elasticsearch·php·课程设计
用户094248568033 小时前
第23章:OpenJDK逃逸分析、标量替换与锁优化
java·jvm
wuminyu3 小时前
LockStack在虚拟线程Mount和Unmount拷贝过程剖析
java·linux·c语言·jvm·c++