class Solution {
public:
string addBinary(string a, string b) {
string longer=a.length()>b.length() ? a:b;
string shorter=a.length()>b.length() ? b:a;
int add=0;
int j=longer.length()-1;
for(int i=shorter.length()-1;i>=0;--i,--j){
if(shorter[i]-'0'+longer[j]-'0'+add>1){
longer[j]='0'+(shorter[i]-'0'+longer[j]-'0'+add)%2;
add=1;
}else{
longer[j]='0'+(shorter[i]-'0'+longer[j]-'0'+add)%2;
add=0;
}
}
while(j>=0){
if(longer[j]-'0'+add>1){
longer[j]='0';
add=1;
}else{
longer[j]=longer[j]+add;
add=0;
}
--j;
}
if(add)
longer.insert(0,1,'1');
return longer;
}
};