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

最后反转即可。

相关推荐
用户818187062746几秒前
第26章 Kafka vs RocketMQ vs RabbitMQ真实选型对比
java·后端
lv__pf3 分钟前
09-深入理解AQS之独占锁ReentrantLock源码分析【TL 并发 09】
java·开发语言
letisgo53 分钟前
JAVA 高级进阶18篇《生产级RAG:切分、检索、评估与Graph RAG全链路实战》
java·面试·检索增强·rag·graph rag
随遇而安zx7 分钟前
【并发】---Disruptor 原理、源码与实战 深度解析
java·并发·disruptor
Lyyaoo.10 分钟前
【二分查找】【困难】寻找两个有序数组的中位数
java·数据结构·算法
小羊没烦恼!23 分钟前
Memory 记忆设计讨论:Agent Memory 的安全边界:权限、删除、版本与回执
java·大数据·word·powerpoint·.net
这是程序猿23 分钟前
Java线程池深度剖析:源码原理、核心参数、任务调度与生产调优实战
java·开发语言·python
rannn_11125 分钟前
【Java面试八股】Java基础篇|数据类型、面向对象、关键字、反射、注解、异常、新特性、序列化、设计模式、IO
java·后端·面试
MacroZheng35 分钟前
阿里又开源了一个神级 Skill 项目!
java·人工智能·后端
6Hzlia1 小时前
【Classic 150 刷题计划】 LeetCode 123. 买卖股票的最佳时机 III | C++ 状态机动态规划与通用交易拓展
c++·算法·leetcode