add binary


Add Binary
难得一次AC

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
public String (String a, String b) {
int[] ans = new int[a.length() + b.length() + 1];
int ia = a.length() - 1, ib = b.length() - 1, i = ans.length - 1;
int carry = 0;
while (ia >= 0 && ib >= 0) {
int sum = carry + a.charAt(ia--) - '0' + b.charAt(ib--) - '0';
if (sum == 3) {
carry = 1;
ans[i--] = 1;
} else if (sum == 2) {
carry = 1;
ans[i--] = 0;
} else {
ans [i--] = sum;
carry = 0;
}
}
while (ia >= 0) {
int sum = carry + a.charAt(ia--) - '0';
if (sum == 2) {
carry = 1;
ans[i--] = 0;
} else {
carry = 0;
ans[i--] = sum;
}
}
while (ib >= 0) {
int sum = carry + b.charAt(ib--) - '0';
if (sum == 2) {
carry = 1;
ans[i--] = 0;
} else {
carry = 0;
ans[i--] = sum;
}
}
if (carry != 0) {
ans[i--] = carry;
}
i = 0;
while (i < ans.length && ans[i] == 0)
++i;
StringBuilder sb = new StringBuilder();
while (i< ans.length) {
sb.append(ans[i++]);
}
return sb.length() == 0 ? "0" : sb.toString();
}