/*
* 算法思想:
* 记录每个字符出现频率,按照频率排序,最后在从频率计数器中取出对应的字符即可。
*
*/
typedef struct node{
int index;
int cnt;
} Node;
int cmp(Node *a, Node *b){
return a->cnt - b->cnt;
}
char * frequencySort(char * s){
int i;
Node arr[128];
int index = 0;
memset(arr, 0, sizeof(arr));
for(i=0; s[i]!= 0; i++){
arr[s[i]].index = s[i];
arr[s[i]].cnt++;
}
qsort(arr, 128, sizeof(Node), cmp);
printf("test end \n");
for(i=127; i>=0; i--){
if(!arr[i].cnt) continue;
while(arr[i].cnt--)
s[index++] = arr[i].index;
}
return s;
}
LeetCode-451. 根据字符出现频率排序-C语言
最新推荐文章于 2025-03-26 14:59:58 发布