搜索此博客

2012年10月15日星期一

Add Binary


Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100".

Remember the carry all the time!
01 public String addBinary(String a, String b) {
02     char []charA=a.toCharArray();
03     int lastA=charA.length-1;
04     char [] charB=b.toCharArray();
05     int lastB=charB.length-1;
06   
07     int len=lastA+1;
08     if(lastA<lastB)
09     {
10         len=lastB+1;
11     }
12     char[] results=new char[len+1];
13     int last=len;
14     int temp=0;
15     int sum=0;
16     int carrier=0;
17   
18     while(lastA>=0 && lastB >=0)
19     {
20         int digitA=charA[lastA]-'0';
21         int digitB=charB[lastB]-'0';
22         sum=digitA+digitB+carrier;
23         temp=sum%2;
24         carrier=sum/2;
25         results[last]=(char)(temp+'0');
26         lastA--;
27         lastB--;
28         last--;
29     }
30     while(lastA>=0)
31     {
32         int digitA=charA[lastA]-'0';
33         sum=digitA+carrier;
34         temp=sum%2;
35         carrier=sum/2;
36         results[last]=(char)(temp+'0');
37         lastA--;
38         last--;      
39     }
40   
41     while(lastB>=0)
42     {
43         int digitB=charB[lastB]-'0';
44         sum=digitB+carrier;
45         temp=sum%2;
46         carrier=sum/2;
47         results[last]=(char)(temp+'0');
48         lastB--;
49         last--;      
50     }
51     results[last]=(char)(carrier+'0');
52     String resultStr=new String(results);
53     if((results[0]-'0')==0)
54     {
55         resultStr=resultStr.substring(1,resultStr.length());
56     }
57     return resultStr;
58   
59 }

没有评论:

发表评论