67. Add Binary

来源:互联网 发布:如何入门数据分析师 编辑:程序博客网 时间:2024/06/06 06:34

**题目:
Given two binary strings, return their sum (also a binary string).
For example,
a = “11”
b = “1”
Return “100”.
Subscribe to see which companies asked this question
**

思想:String ->Char->int->String

public class Add_Binary {     /* main function to solve the problem*/    public String addBinary(String a,String b)    {        int length_a = 0;        int length_b = 0;        length_a = getlength(a);        length_b = getlength(b);        return judge(a,b,length_a,length_b);    }    /* get the String's length*/    public int getlength(String x)    {        int length = x.length();        return length;    }    /* judge String a and String b and use function*/    public String judge(String a,String b,int x,int y)    {        int max = Math.max(x,y);        int min = Math.min(x,y);        int carries = 0;        String result = "";        int j = 0 ;        if(x==0||a==null)            return b;        else if(y==0||b==null)            return a;        else        {            //when a.length>0 and b.length>0            while(max>0&&min>0)            {                int p = a.charAt(a.length()-j-1)-'0'+b.charAt(b.length()-j-1)-'0'+carries;                result = p%2+ result;                carries = p/2;                j++;                max--;                min--;            }            //when a.length=min and it can't use the top function to solve problem;            if(j==a.length())            {                while(j!=b.length())                {                    int p = b.charAt(b.length()-j-1)-'0'+carries;                    result = p%2+ result;                    carries = p/2;                    j++;                }            }            //when b.length=min and it can't use the top function to solve problem;            else if(j==b.length())            {                while(j!=a.length())                {                    int p = a.charAt(a.length()-j-1)-'0'+carries;                    result = p%2+ result;                    carries = p/2;                    j++;                }            }            //At the Last,if carries == 1 ,we must put "1" in front of it;            if(carries==1)                result = "1"+result;            return result;        }    }    public static void main(String[] args) {        Add_Binary newbinary = new Add_Binary();        System.out.println(newbinary.addBinary("1101", "11"));    }}
0 0