string addBinary(string a, string b){
if(a=="0" || a.empty())
return b;
if(b=="0" || b.empty())
return a;
int indexa = a.size()-1;
int indexb = b.size()-1;
string result;
int aa,bb, rem,carry ;
aa=bb=rem=carry = 0;
// while(indexa>=0 || indexb >=0){
// aa= indexa<0 ? 0 : a[indexa]-'0'; //转换成数字
// bb = indexb<0? 0 : b[indexb]-'0';
// rem = (aa+bb+carry)%2;
// carry = (aa+bb+carry)/2;
//
// //rem = rem+'0'; //转换成字符
// //rem += rem;
// result.insert(result.begin(),rem+'0'); //每次插入到string的首部,就不用翻转了
//
// indexa--;
// indexb--;
// }
for(;indexa>=0||indexb>=0; indexa--,indexb--){
aa= indexa<0 ? 0 : a[indexa]-'0'; //转换成数字
bb = indexb<0? 0 : b[indexb]-'0';
rem = (aa+bb+carry)%2;
carry = (aa+bb+carry)/2;
result.insert(result.begin(),rem+'0');
}
if(carry==1)
result.insert(result.begin(),'1');
cout << result << endl;
// strrev((char*)result.c_str());
// reverse(result.begin(),result.end());
return result;
}