• SDNU 1106.字符统计器(水题)


    Description

    费了好长时间敲出的一篇论文,想不想知道其中敲了多少个字母?那么现在我们去写一个程序实现吧!

    Input

    输入有多行数据,每行数据不会超过10000个字符,同时我们保证,每行不会出现空格和TAB。

    Output

    对于每一行输入数据,按出现次数从大到小输出该字母和出现的次数,字母统一用大写字母表示,如果两个字母出现次数相同,按字母表的先后顺序输出,如果这个字母没有出现,不输出该字母。输出完该行所有字母的出现次数后,输出“---”。

    Sample Input

    Congqianyouzuoshan,
    Shanshangyougemiao,
    Miaomiaomiao~~

    Sample Output

    N 3
    O 3
    A 2
    U 2
    C 1
    G 1
    H 1
    I 1
    Q 1
    S 1
    Y 1
    Z 1
    ---
    A 3
    G 2
    H 2
    N 2
    O 2
    S 2
    E 1
    I 1
    M 1
    U 1
    Y 1
    ---
    A 3
    I 3
    M 3
    O 3
    ---
    #include<bits/stdc++.h>
    using namespace std;
    
    struct node
    {
        char c;
        int num;
    }r[100+8];
    
    bool cmp(node a, node b)
    {
        if(a.num != b.num)return a.num>b.num;
        return a.c<b.c;
    }
    
    char s[10000+8];
    
    int main()
    {
    //    for(int i = 65; i<91; i++)r[i].c = (char)i;
        while(gets(s))
        {
            for(int i = 65; i<91; i++)r[i].c = (char)i;
            for(int i = 0; i<100; i++)r[i].num = 0;
            int len = strlen(s);
            for(int i = 0; i<len; i++)
            {
                if(s[i] >= 'A' && s[i] <= 'Z')r[(int)s[i]].num++;
                if(s[i] >= 'a' && s[i] <= 'z')r[(int)s[i]-32].num++;
            }
            sort(r, r+91, cmp);
            for(int i = 0; r[i].num>0; i++)
                printf("%c %d
    ", r[i].c, r[i].num);
            printf("---
    ");
        }
        return 0;
    }
  • 相关阅读:
    c# 反射应用之工厂
    UnityContainer 实现DI
    TinyMCE 的音乐插件/mp3 music insert plugin
    Django on IronPython and Windows
    说说分页
    Katze 简单的.net "ORM"框架
    Discuz!NT在64位Windows下运行的问题
    恐怖的迅雷
    基于Gettext的asp.net网站多语言解决方案
    微软是如何输掉API之战(下)
  • 原文地址:https://www.cnblogs.com/RootVount/p/10969506.html
Copyright © 2020-2023  润新知