Description
输出字符出现的次数,并按照字母顺序表排序输出
输入
ddkafadf
输出
a2d3f2k1
分析
ascii表*有128个元素,其中包括了a-z,我们可以初始化一个长为128的数组,用来表示所有元素个数都为0,然后遍历要计算的字符串,遍历字符串的内容即为初始化数组的下标。以下面代码为例,若buffer的第一个字符是'a' 那么 'a'对应的ascii码就为bucket的下标,并将下标所对应的内容+1,以达到计数的目的
#include <stdio.h>
int main() {
char buffer[100] = "";
gets(buffer);
int bucket[128] = { 0 }; //ascii表*有128个元素
for (int i = 0; buffer[i] != '\0'; i++) {
bucket[buffer[i]]++;
}
for (int i = 0; i < 128; i++) {
if (bucket[i] > 0) {
printf("%c%d", i, bucket[i]);
}
}
return 0;
}