【LeetCode】67.二进制求和

题目
在这里插入图片描述
思路:很简单,从后向前遍历,如果位数少的补零,加和,使用 StringBulider进行添加字符,最后判断是否需要进位,如果需要就加‘1’.最后反向输出即可。

public  static String addBinary(String a, String b) {
        if(a.length() ==0) return b;
        if(b.length() ==0) return a;
        StringBuilder sb = new StringBuilder();
        int i = a.length()-1;
        int j = b.length()-1;
        int carry = 0;
        while( i >=0 || j>=0){
            int sum = carry;
            sum +=  i>=0 ? a.charAt(i) - '0' : 0;
            sum += j>=0 ? b.charAt(j) -'0' : 0;
            carry = sum/2;
            sb.append(sum%2);
            i--;
            j--;
        }
        sb.append(carry == 1 ? carry : "" );
       return sb.reverse().toString();
    }

时间复杂度O(n)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值