题解 | #字符统计#
字符统计
https://www.nowcoder.com/practice/c1f9561de1e240099bdb904765da9ad0
#include <stdio.h> #include <string.h> struct str{ char ch; int count; }; void sort(struct str *str) { struct str tem={'\0',0}; int i=0,j=0; for(i=0;i<62;i++) { for(j=0;j<61;j++) { if(str[j].count<str[j+1].count) { tem=str[j]; str[j]=str[j+1]; str[j+1]=tem; } } } } int main() { char str[1002]={'\0'}; fgets(str,1002,stdin); int len = strlen(str)-1; struct str count[62]={{'\0',0}}; for(int i=0;i<len;i++) { if(str[i]>='a'&&str[i]<='z')//a~z:97-112 { count[str[i]-'a'+36].ch=str[i]; count[str[i]-'a'+36].count++; } else if(str[i]>='A'&&str[i]<='Z')//A~Z:65~90 { count[str[i]-'A'+10].ch=str[i]; count[str[i]-'A'+10].count++; } else {//0~9:48~57 count[str[i]-'0'].ch=str[i]; count[str[i]-'0'].count++; } } sort(count); for(int i=0;i<62;i++) if(count[i].count>0) printf("%c",count[i].ch); return 0; }
定义一个结构体数组,用来保存每个出现的字符以及该字符出现的次数,最后对该数组进行降序排序。
因为结构体数组保存出现字符的时候就已经按照ascii码进行升序存储,所以不需要进行特别处理。