二进制求和

二进制求和

思路好想:

模拟

位运算


所以我们的目的是我们尽量的简化代码。

我采用的方法是模拟。



代码如下:

class Solution {
    public String addBinary(String a, String b) {
        StringBuffer sb = new StringBuffer();
        return helper(a,b,sb,0);
    }
    public String helper(String a,String b,StringBuffer sb,int ad){
        int len1 = a.length();
        int len2 = b.length();
        if(len1==0&&len2==0){
            if(ad!=0){
                sb.insert(0,ad+"");
            }
            return sb.toString();
        }
        int a1 = len1==0?0:a.charAt(len1-1)-'0';
        int a2 = len2==0?0:b.charAt(len2-1)-'0';
        a = a.length()==0?a:a.substring(0,len1-1);
        b = b.length()==0?b:b.substring(0,len2-1);
        int advance = 0;
        if(a1+a2+ad==3){
            sb.insert(0,'1');
            advance = 1;
        }else if(a1+a2+ad == 2){
            sb.insert(0,'0');
            advance = 1;
        }else if(a1+a2+ad==1||a1+a2+ad==0){
            sb.insert(0,(a1+a2+ad)+"");
        }
        return helper(a,b,sb,advance);
    }
}
posted @ 2020-06-23 09:18  jackandtwo  阅读(140)  评论(0)    收藏  举报