0
点赞
收藏
分享

微信扫一扫

剑指 Offer II 002. 二进制加法(模拟)

扒皮狼 2022-04-13 阅读 79

文章目录


题目

示例 1:

示例 2:

提示:


一、解题及代码

模拟运算:

在这里插入图片描述
初始化carry=0记录是否有进位

代码如下:

public String addBinary(String a, String b) {
        StringBuilder res = new StringBuilder();
        //从末位开始计算,所以最后需要反转res
        int i = a.length()-1;
        int j = b.length()-1;
        int carry = 0 ;
        while(i>=0||j>=0){
            int digit1 = i>=0 ? a.charAt(i--)-'0' : 0;
            int digit2 = j>=0 ? b.charAt(j--)-'0' : 0;
            int sum = digit1 + digit2 +carry;
            carry = sum>=2 ? 1:0;
            sum = sum>=2 ? sum-2:sum;
            res.append(sum);
        }
        if(carry==1) res.append(1);
        return res.reverse().toString();
    }

侵删

举报

相关推荐

0 条评论