public String addBinary(String a, String b) {
//
char resi = '0';
int lena = a.length();
int lenb = b.length();
int len = (lena > lenb ? lena : lenb) - 1;
int idxa = lena - 1, idxb = lenb - 1;
String ans = "";
while(idxa >= 0 || idxb >= 0) {
char ac = '0', bc = '0';
if(idxa >= 0) ac = a.charAt(idxa--);
if(idxb >= 0) bc = b.charAt(idxb--);
int digSum = (resi - '0') + (ac - '0') + (bc - '0');
if(digSum == 3) {
ans = "1" + ans;
resi = '1';
} else if(digSum == 2) {
ans = "0" + ans;
resi = '1';
} else if(digSum == 1) {
ans = '1' + ans;
resi = '0';
} else if(digSum == 0) {
ans = '0' + ans;
resi = '0';
}
}
if(resi == '1') return "1" + ans;
return ans;
}