【LeetCode】 67 二进制求和

二进制字符串相加算法

在这里插入图片描述


解题思路:
1 这个也是两个表经过操作合成一个表的题目,最大的问题就是两表长度不一致。可以每次都把两个表放进for循环,如果长度短的表没有可以操作的内容,就用条件语句将它跳过。 这样代码相对简洁
2 每次运算的结果有0、1、2和3四种情况。其中,0和2需要在结果前加一个“0”、1和3需要加一个“1”;2和3需要进位,0和1不需要进位。

代码:

class Solution {
    public String addBinary(String a, String b) {     
        String result = "";
        
        char[] charA = a.toCharArray();
        char[] charB = b.toCharArray();
        
        int flag = 0;
        
        int i = charA.length - 1;
        int j = charB.length - 1;
        
        for (;i >= 0 || j >= 0;){
            char ca, cb;
            int num;
            if (i >=0 && j >=0){
                ca = charA[i];
                cb = charB[j];
                num = ca - '0' + cb -'0' + flag;

                if (num % 2 == 0)
                    result = "0" + result;
                else result = "1" + result;

                if (num >= 2)
                    flag = 1;
                else flag = 0;
                i--;j--;
            }
            else if (i>=0 && j<0){
                ca = charA[i];
                num = ca - '0' + flag;

                if (num % 2 == 0)
                    result = "0" + result;
                else result = "1" + result;

                if (num >= 2)
                    flag = 1;
                else flag = 0;
                i--;
            }
            else if (j>=0 && i<0){
                cb = charB[j];
                num = cb -'0' + flag;
                
                if (num % 2 == 0)
                    result = "0" + result;
                else result = "1" + result;

                if (num >= 2)
                    flag = 1;
                else flag = 0;
                j--;
            }
            
        }
        if (flag == 1)
            result = "1" + result;

        return result;
        
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值