我们都有梦想 (stringstream与map)

描述

  林静究竟在忙什么?暑假没有回家,现在打电话到他宿舍总是不在,郑微通过他的舍友给他留了自己的电话,也不见他回复。明明上火车的前两天郑微还跟林静通过电话,他在那一头答应得好好的,等她到了广州,他就会带她到处去玩,吃遍广州的小吃,当时郑微没有感觉到丝毫的异样,就连他的笑声也是一如既往地带着她熟悉的宠溺和宽容。
  可是现在郑微没忘记两人的约定,林静却踪影全无。难道是她打错了电话?不可能!那个电话她倒着也能背出来,何况那边接电话的舍友明明也是认得林静的,只是说他不在。
  不在不在,老是不在!还说是个模范好学生,不知道跑到哪鬼混去了!郑微气鼓鼓地想,等到见了面,非把他数落一顿不可。

有点不高兴的郑薇手里拿着一封已经封上了口的信,里面写满了她想对林静说的话,但此时的她小心将信封撕开,想再看一遍写下时的那份甜蜜。

你要做的就是对一篇文章的字母进行统计。 而文章是由好多行字母,空格,标点组成的每行不会超过72个字符,请打印一个统计直方图来统计每个字母出现的次数 (不统计空行,数字,标点)。

输入

输入一份郑薇的甜言蜜语,只含有大小写字符,空格,标点。

输出

打印这一份甜蜜的统计图,具体如样例(最后不要空行)。

输入样例 1 

Amazing grace! How sweet the sound!
That saved a wretch like me!
I once was lost but now I am found,
Was blind but now I see.

输出样例 1

        *                                          
        *                                          
*       *                                          
*       *                             *            
*       *                 * *       * *     *      
*       *       *         * *       * *     *      
*       *       *         * *       * *     *      
*     * *     * *         * *       * * *   *      
* * * * *     * *     * * * *       * * *   *      
* * * * *   * * *     * * * *     * * * *   *      
* * * * * * * * *   * * * * *     * * * * * *     *
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
#include <bits/stdc++.h>

using namespace std;

int main()
{
    map<char,int> mp;
    for(int i=0; i<26; i++) mp['A'+i]=0;
    string line,word;
    /*for(int i=0;i<4;i++){
        getline(cin,line);*/   //取消注释并将while行注释查看输出结果
    while(getline(cin,line)){

        stringstream ss(line);  //将输入的line读入ss中
        //cout<<ss.str()<<endl;  //查看ss的输出
        while(ss>>word)          //将ss中的单个字符串读入word中
        {
            transform(word.begin(), word.end(), word.begin(), ::toupper);//将字符串字符全 
                                                                         //转成大写的函数
            for(int i=0; i<word.size(); i++)
            {
                if(word[i]>='A'&&word[i]<='Z') mp[word[i]]++;  
            }
        }
    }
    int mx=0;
    for(int i=0; i<26; i++)
    {
        mx=max(mx,mp['A'+i]);   //得到出现次数最多的字符的个数
    }
    for(int i=mx; i>0; i--,mx--)
    {
        for(int i=0; i<26; i++)
        {
            if(mp['A'+i]==mx)
            {
                cout<<"*";
                mp['A'+i]--;
            }
            else cout<<" ";
            if(i<=24)cout<<" ";

        }
        cout<<endl;
    }
    cout<<"A B C D E F G H I J K L M N O P Q R S T U V W X Y Z"<<endl;
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值