zoukankan      html  css  js  c++  java
  • 【2033】统计字符串中的字母个数

    Time Limit: 20 second
    Memory Limit: 20 MB

    问题描述输入一串小写字母(以"."为结束标志),统计出每个小写字母在该字符串中出现的次数(若某字母不出现,则不要输出)。若输入大写字母或数字,则不计数. (类似题目如:投票问题,将候选人各对应一个字母,唱票时顺序输入,唱票结束用".",可以用这种方法统计选票,若输入其他内容,按照废票计算.)

    Input

    输入仅一行
    输入字符串以"."结束

    Output

    输出统计的字母及其次数。统计结果按字母顺序显示。

    Sample Input

    输入:aaaabbbccc.
    
    

    Sample Output

    输出:a:4
       b:3
       c:3  回车
    

    【题解】

    用int a[27] 来统计各个字母的出现次数。注意先找到".'的位置然后字符串是从0开始的.是否为小写字母用 >='a' <= 'z'来判断。

    【代码】

    #include <cstdio>
    #include <iostream>
    #include <string>
    
    using namespace std;
    
    string s1;
    int a[27];
    
    void input_data()
    {
        char ts[300];
        cin.getline(ts,300);
        s1 = string(ts); //应该是没有空格的 练习了一下 cin.getline 的用法 
        for (int i = 1;i <= 26;i++) //初始化各个字母出现的次数 
            a[i] = 0;
    }
    
    void get_ans()
    {
        int p = 0;
        while (s1[p] != '.') p++; //先找到终止符的位置 
        for (int i = 0;i <= p-1;i++)
        	if ((s1[i] >= 'a') && (s1[i] <= 'z')) //如果这个字符是小写字母 就记录并递增数目 
        		a[s1[i]-'a'+1]++;
    }
    
    void output_ans() //输出各个字母出现的次数。 
    {
        for (int i = 1;i <= 26;i++)
    	    if (a[i] > 0)
    			{
    				char t = i + 'a' -1;
    				cout << t << ':' << a[i] <<endl;
    			}
    }
    
    int main()
    {	
        input_data();
        get_ans();
        output_ans();
        return 0;	
    }
    


     

  • 相关阅读:
    丑数——剑指offer面试题34
    把整数排成最小的数——剑指offer面试题33
    从1到n整数中1出现的次数——剑指offer面试题32
    各种排序方法及其比较
    scrapy安装
    水仙花数
    分数化小数(decimal)
    子序列的和
    倒三角
    韩信点兵
  • 原文地址:https://www.cnblogs.com/AWCXV/p/7632492.html
Copyright © 2011-2022 走看看