Given two binary strings, return their sum (also a binary string).
For example,
a =
"11"
b =
"1"
Return
"100".
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 }
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 }
没有评论:
发表评论