zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    【Oracle】安装
    【Java】String,StringBuffer与StringBuilder的区别??
    【Java】基本数据类型长度
    静态构造函数
    【算法】递归算法
    【JavaScript】JavaScript教程之------------------JavaScript实现
    【Android】listview优化
    【JAVA EE企业级开发四步走完全攻略】
    Eclipse下Tomcat插件的安装
    Android工具
  • 原文地址:https://www.cnblogs.com/RootVount/p/10969506.html
Copyright © 2011-2022 走看看