题解 | #字符统计#

字符统计

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

全部评论

相关推荐

jack_miller:我给我们导员说我不在这里转正,可能没三方签了。导员说没事学校催的时候帮我想办法应付一下
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务