class Solution {
public:
string addBinary(string a, string b) {
string res;
int s1=a.size();
int s2=b.size();
if(s1==0) return b;
if(s2==0) return a;
int temp=0;
while(s1>=1&&s2>=1){
temp+=a[s1-1]-'0'+b[s2-1]-'0';
if(temp>1){
res += temp-2+'0';
temp = 1;
}
else{
res += temp + '0';
temp = 0;
}
s1--;
s2--;
}
while(s1>=1){ //if s1 is longer
temp+=a[s1-1]-'0';
if(temp>1){
res += temp-2+'0';
temp = 1;
}
else{
res += temp + '0';
temp = 0;
}
s1--;
}
while(s2>=1){ //if s1 is longer
temp+=b[s2-1]-'0';
if(temp>1){
res += temp-2+'0';
temp = 1;
}
else{
res += temp + '0';
temp = 0;
}
s2--;
}
if(temp)
res += temp + '0';
reverse(res.begin(),res.end());
return res;
}
};