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; } };