【leetcode】重新排列日誌檔案
阿新 • • 發佈:2020-09-08
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;
}