use stack
1 public class Solution { 2 public String addBinary(String a, String b) { 3 if(a == null||b == null) 4 return ""; 5 if(a.length() == 0) 6 return b; 7 if(b.length() == 0) 8 return a; 9 Stack<Integer> stack = new Stack<Integer>(); 10 int len1 = a.length(); 11 int len2 = b.length(); 12 int len = Math.max(len1, len2); 13 len1--; 14 len2--; 15 int carry = 0; 16 for(int i = 0; i < len; i++){ 17 if(len1 - i >= 0) 18 carry += a.charAt(len1 - i) - '0'; 19 if(len2 - i >= 0) 20 carry += b.charAt(len2 - i) - '0'; 21 stack.push(carry % 2); 22 carry /= 2; 23 } 24 if(carry == 1) 25 stack.push(1); 26 StringBuilder builder = new StringBuilder(); 27 while(!stack.isEmpty()) 28 builder.append(String.valueOf(stack.pop())); 29 return builder.toString(); 30 } 31 }