1 class Solution {
2 public String addBinary(String a, String b) {
3 if(a.length() == 0 && b.length() == 0) return null;
4 StringBuilder sb1 = new StringBuilder(a);
5 sb1.reverse();
6 StringBuilder sb2 = new StringBuilder(b);
7 sb2.reverse();
8 StringBuilder res = new StringBuilder();
9 int carry = 0;
10 for(int i = 0; i < Math.max(sb1.length(), sb2.length()); i++) {
11 if(i >= sb2.length()) {
12 res.append((sb1.charAt(i) - '0' + carry) % 2); //注意carry要在 下面 更新
13 carry = (sb1.charAt(i) - '0' +carry) / 2;
14
15 }else if(i >= sb1.length()){
16 res.append((sb2.charAt(i) - '0' + carry) % 2);
17 carry = (sb2.charAt(i) - '0' +carry) / 2;
18 }else {
19 res.append((sb1.charAt(i) - '0' + sb2.charAt(i) - '0' + carry) % 2);
20 carry = (sb1.charAt(i) - '0' + sb2.charAt(i) - '0' + carry) / 2;
21 }
22 }
23 if(carry == 1) {
24 res.append(1);
25 }
26 return res.reverse().toString();
27
28 }
29 }