题目:

代码:
public String addBinary(String a, String b) {
StringBuilder sb = new StringBuilder();
String str_max = (a.length() >= b.length()) ? a:b;
String str_min = (a.length() < b.length()) ? a:b;
int count = 0;
boolean flag = false;
while (count < str_min.length()){
char num1 = str_min.charAt(str_min.length()-1-count);
char num2 = str_max.charAt(str_max.length()-1-count);
if (num1=='0' && num2=='0' && !flag){
sb.append(0);
flag = false;
}else if (num1=='0' && num2=='0' && flag){
flag = false;
}else if (num1=='1' && num2=='1' && flag){
sb.append(1);
}else if(num1=='1' && num2=='1' && !flag){
sb.append(0);
sb.append(1);
flag = true;
} else{
if (sb.length()!=0&&sb.charAt(sb.length()-1)=='1'&&flag){
sb.deleteCharAt(sb.length()-1);
sb.append(0);
sb.append(1);
}else {
sb.append(1);
flag = false;
}
}
count++;
}
if (a.length()!=b.length()) {
while (count < str_max.length()){
if (sb.charAt(sb.length()-1)=='1'&&str_max.charAt(str_max.length()-1-count)=='1'&&flag){
sb.deleteCharAt(sb.length()-1);
sb.append(0);
sb.append(1);
}else if (sb.charAt(sb.length()-1)=='1'&&str_max.charAt(str_max.length()-1-count)=='0'&&flag){
flag = false;
}else {
sb.append(str_max.charAt(str_max.length()-1-count));
flag = false;
}
count++;
}
}
return sb.reverse().toString();
}