class Solution {
public:
string addBinary(string a, string b) {
int lena = a.size();
int lenb = b.size();
string result="";
int i=lena-1, j=lenb-1;
int flag=0, temp;
while((i+1) || (j+1)){
a[i] = (i==-1)?'0':a[i];
b[j] = (j==-1)?'0':b[j];
if(a[i]-'0'+b[j]-'0' + flag == 2){
flag=1;
result.push_back('0');
}
else{
if(a[i]-'0'+b[j]-'0' + flag == 0)
result.push_back('0');
else
result.push_back('1');
flag=0;
}
i = (i!=0 && i!=-1)?(i-1):(-1);
j = (j!=0 && j!=-1)?(j-1):(-1);
}
if(flag==1)
result.push_back('1');
reverse(result.begin(), result.end());
return result;
}
};
短二进制数没有报错,在输入的二进制数串长度过大时会报错:double free or corruption (out): 0x0000000001e270f0 ***