LeetCode_Add Binary

 

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 ;

        }


}

 

posted @ 2013-04-08 23:30  冰点猎手  阅读(138)  评论(0编辑  收藏  举报