67. 二进制求和

package leetcode;

public class demo_67 {
    public String addBinary(String a, String b) {
        String s="";
        int i=a.length()-1;
        int j=b.length()-1;
        int c;
        //进位数
        int add=0;
        while(i>=0&&j>=0) {
            //减去48是为了将ASCII的0和1 转换成正常的0和1
            c= Integer.valueOf(a.charAt(i))-48+Integer.valueOf(b.charAt(j))-48+add;
            if(c>=2) {
                c=c%2;
                add=1;
            }
            else {
                add=0;
            }
            s=s+c;
            i=i-1;
            j=j-1;
            
        }
        if(j<0) {
            while(i>=0) {
                c=Integer.valueOf(a.charAt(i))-48+add;
                if(c>=2) {
                    c=c%2;
                    add=1;
                }
                else {
                    add=0;
                }
                s=s+c;
                i=i-1;
            }
        }
        if(i<0) {
            while(j>=0) {
                c=Integer.valueOf(b.charAt(j))-48+add;
                if(c>=2) {
                    c=c%2;
                    add=1;
                }
                else {
                    add=0;
                }
                s=s+c;
                j=j-1;
            }
        }
        if(add==1) {
            s=s+1;
        }
        StringBuffer sb=new StringBuffer(s);
        sb=sb.reverse();
        s=sb.toString();
        System.out.println(s);
        return s;
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        demo_67 d67=new demo_67();
        String a="1010";
        String b="1011";
        d67.addBinary(a, b);
    }

}

 

上一篇:还在手工生成数据库文档?3个步骤自动完成了解一下


下一篇:今年48岁社保一直没有交过,现在单位要求一定要买,可是就差两年就到退休,该怎么办?