题解 | #字符统计#
字符统计
https://www.nowcoder.com/practice/c1f9561de1e240099bdb904765da9ad0
#include <stdio.h>
int main() {
int hash[10+26]={};
int count=0;
char c;
while(scanf("%c",&c)&&c!='\n'){
if(c>='a'&&c<='z'){
hash[c-'a'+10]++;
if(hash[c-'a'+10]==1) count++;
}
else {
hash[c-'0']++;
if(hash[c-'0']==1) count++;
}
}
for(int i=0;i<count;i++){
int max=0;
int loc=-1;
for(int j=0;j<36;j++){
if(hash[j]>max){
max=hash[j];
loc=j;
}
}
if(loc<10)
printf("%c",(char)(loc+'0'));
else
printf("%c",(char)(loc+'a'-10));
hash[loc]=0;
}
printf("\n");
//printf("%c",'0'>'a'?'0':'a');
return 0;
}
测试可知ASCII中数字在小写字母之前,直接使用hash
对每一个字符,统计其输入个数,映射到hash表中
对完成统计的hash表进行遍历(遍历的轮次取决于不重复的字符个数)
每次找到其中次数最多的那个,将对应坐标转换成字符并输出,同时将其中的统计值变为0(防止多次统计输出)
轮次结束则输出完成。
传音控股公司福利 304人发布
查看1道真题和解析