【leetcode】重新排列日志文件

 

int Mycmp( const void * a , const void * b){
    int i = 0 , j = 0;
    char * s1 = *( ( char ** ) a );
    char * s2 = *( ( char ** ) b );
    while( *( s1 + i++ ) != ' ' );
    while( *( s2 + j++ ) != ' ' ); 
    for(; *(s1+i) != '\0' && *(s2+j) != '\0' && *(s1+i)==*(s2+j); i++,j++);
    if( i == j && *( s1 + i ) == *( s2 + j ) ){
        i = j = 0;            
        for(; *(s1+i) != '\0' && *(s2+j) != '\0' &&*(s1+i) == *(s2+j); i++,j++);
    }      
    return *( s1 + i ) - *( s2 + j );
}

char ** reorderLogFiles(char ** logs, int logsSize, int* returnSize){
    char** digitArr = (char**)calloc(logsSize,sizeof(char*));
    char** alphaArr = (char**)calloc(logsSize+1,sizeof(char*));
    int i,j;
    int dcount=0,acount=0;
    for (i=0; i<logsSize; i++)
    {
        for (j=0; j<100; j++)
        {
            if (logs[i][j] == ' ')
            {
                if (isdigit(logs[i][j+1])) digitArr[dcount++] = logs[i];
                else alphaArr[acount++] = logs[i];
                break;
            }
        }
    }
    qsort(alphaArr,acount,sizeof(*(alphaArr+0)),Mycmp);
    for (i=acount; i<acount+dcount; i++)
    {
        alphaArr[i] = digitArr[i-acount];
    }
    *returnSize = logsSize;
    return alphaArr;
}

 

posted @ 2020-09-08 17:14  温暖了寂寞  阅读(161)  评论(0编辑  收藏  举报