public class Solution {
public String addBinary(String A, String B) {
int a = A.length()-1;
int b = B.length()-1;
int carry = 0;
StringBuilder ans = new StringBuilder();
while (a>=0 && b>=0){
char ch1 = A.charAt(a–);
char ch2 = B.charAt(b–);
if (ch1=='0' && ch2=='0'){
if (carry==1){
ans.append(1);
carry = 0;
}
else{
ans.append(0);
}
}
else if (ch1=='1' && ch2=='0'){
if (carry==1){
ans.append(0);
carry = 1;
}
else{
ans.append(1);
}
}
else if (ch1=='0' && ch2=='1'){
if (carry==1){
ans.append(0);
carry = 1;
}
else{
ans.append(1);
}
}
else{
if (carry==1){
ans.append(1);
carry = 1;
}
else{
ans.append(0);
carry = 1;
}
}
}
while (a>=0){
char ch = A.charAt(a--);
if (ch=='0' && carry==0){
ans.append(0);
}
else if (ch=='1' && carry==0){
ans.append(1);
}
else if (ch=='0' && carry==1){
ans.append(1);
carry = 0;
}
else{
ans.append(0);
carry = 1;
}
}
while (b>=0){
char ch = B.charAt(b--);
if (ch=='0' && carry==0){
ans.append(0);
}
else if (ch=='1' && carry==0){
ans.append(1);
}
else if (ch=='0' && carry==1){
ans.append(1);
carry = 0;
}
else{
ans.append(0);
carry = 1;
}
}
if (carry!=0)
ans.append(carry);
return ans.reverse().toString();
}
}