string addBinary(string a, string b) {
const char * charA = a.c_str();
const char * charB = b.c_str();
const char * charC;
char *sum = new char[201];
int A = a.size();
int B = b.size();
int C;
if(A < B){
C = A;
A = B;
B = C;
charC = charA;
charA = charB;
charB = charC;
}
int i,j,k;
memset(sum, 0, sizeof(char)* 201);
for(i = 0; i < A;i++)
sum[i+1] = charA[i] ;
for(j = B-1 ,i= 0;j>=0; j--,i++)
sum[A-i] += charB[j] - '0';
for(i = A; i>0;i--)
{
switch(sum[i]){
case '0':
case '1': continue;
case '2': sum[i] = '0'; sum[i-1]+= 1;break;
case '3': sum[i] = '1'; sum[i-1]+= 1; break;
}
}
sum[A+1] = 0;
if(sum[0] == 1) {
sum[0] = '1' ;
string result(sum) ;
delete []sum ;
return result;
}
else{
string resultB(sum+1);
delete [] sum ;
return resultB ;
}
}
--------------------------------------------------------------------天道酬勤!