File tree 1 file changed +15
-15
lines changed
solution/0000-0099/0067.Add Binary
1 file changed +15
-15
lines changed Original file line number Diff line number Diff line change 1
1
class Solution {
2
2
public String addBinary (String a , String b ) {
3
- int al = a .length (), bl = b .length (), di = Math .max (al , bl );
4
- char [] ac = a .toCharArray (), bc = b .toCharArray (), re = new char [di + 1 ];
5
- boolean jw = false ;
6
- for (int i = 1 ; i <= di ; i ++) {
7
- int alc = al - i , blc = bl - i ;
8
- char aChar = alc >= 0 ? ac [alc ] : '0' ;
9
- char bChar = blc >= 0 ? bc [blc ] : '0' ;
10
- if (aChar == bChar ) {
11
- re [di + 1 - i ] = jw ? '1' : '0' ;
12
- jw = aChar == '1' ;
13
- } else re [di + 1 - i ] = jw ? '0' : '1' ;
3
+ StringBuilder reverseAnswer = new StringBuilder ();
4
+ int maxLength = Math .max (a .length (), b .length ());
5
+ int carry = 0 ;
6
+
7
+ for (int i = 0 ;i < maxLength ;i ++) {
8
+ carry += i < a .length () ? a .charAt (a .length () - 1 - i ) - 48 : 0 ;
9
+ carry += i < b .length () ? b .charAt (b .length () - 1 - i ) - 48 : 0 ;
10
+
11
+ reverseAnswer .append (carry % 2 );
12
+ carry /= 2 ;
14
13
}
15
- if (jw ) re [0 ] = '1' ;
16
- StringBuilder builder = new StringBuilder ();
17
- for (char c : re ) if (c != 0 ) builder .append (c );
18
- return builder .toString ();
14
+
15
+ if (carry == 1 ) {
16
+ reverseAnswer .append (1 );
17
+ }
18
+ return reverseAnswer .reverse ().toString ();
19
19
}
20
20
}
You can’t perform that action at this time.
0 commit comments