题解 | #字符统计#

字符统计

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(防止多次统计输出)

轮次结束则输出完成。

全部评论

相关推荐

在评审的大师兄很完美:像这种一般就是部门不匹配 转移至其他部门然后挂掉 我就是这样被挂了
点赞 评论 收藏
分享
11-08 13:58
门头沟学院 Java
程序员小白条:竟然是蓝桥杯人才doge,还要花钱申领的offer,这么好的公司哪里去找
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务