题解 | #字符统计#

字符统计

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码进行升序存储,所以不需要进行特别处理。

全部评论

相关推荐

美团 后端开发 总包n(15%是股票)
点赞 评论 收藏
分享
头像
11-06 10:58
已编辑
门头沟学院 嵌入式工程师
双非25想找富婆不想打工:哦,这该死的伦敦腔,我敢打赌,你简直是个天才,如果我有offer的话,我一定用offer狠狠的打在你的脸上
点赞 评论 收藏
分享
10-21 23:48
蚌埠坦克学院
csgq:可能没hc了 昨天一面完秒挂
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-20 19:57
已编辑
某大厂 golang工程师 23.0k*16.0, 2k房补,年终大概率能拿到
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务