-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAddBinary.java
28 lines (26 loc) · 874 Bytes
/
AddBinary.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class Solution {
public String addBinary(String a, String b) {
if (a == null || a.length() == 0)
return b;
if (b == null || b.length() == 0)
return a;
int len = (a.length() > b.length() ? a.length() : b.length()) + 1;
char[] cr = new char[len];
int ia = a.length() - 1, ib = b.length() - 1, ir = cr.length - 1;
int carry = 0;
while (ia >= 0 || ib >= 0) {
int result = carry;
if (ia >= 0)
result += (a.charAt(ia) - '0');
if (ib >= 0)
result += (b.charAt(ib) - '0');
carry = result / 2;
cr[ir--] = (result % 2 == 0) ? '0' : '1';
ia--;
ib--;
}
if (carry > 0)
cr[ir--] = '1';
return new String(cr, ir+1, cr.length - ir - 1);
}
}