1. 程式人生 > 實用技巧 >【leetcode】重新排列日誌檔案

【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; }