解题思路:
单词数量和单词相关联,容易想到关联容器map,可以用map存放单词,每个单词都关联一个数。
但是map会自动对内容排序,所以就需要另一个容器存放单词。
容易想到的是队列,先进先出,但是队列queue容器不是很好操作,所以就使用了数组容器vector。
参考代码:
#include <bits/stdc++.h> #define ll long long using namespace std; int main() { string s; map<string,int>p;//创建map容器,string 关联 int vector<string>v;//创建vector容器,类型为string存放单词 ll len=0; //len用来表示最长的单词长度 while(cin>>s){//使用空格分隔单词 string t; for(auto i:s){ if(i>='a'&&i<='z')t+=i-32; if(i>='A'&&i<='Z')t+=i;//将字母转变成大写放入t中,空格逗号句号等不做处理 } if(!p.count(t)){//如果map中没有存放过单词t v.push_back(t);//将单词加入数组v中 len=max(len,(ll)t.size());//判断单词长度和之前最长单词长度,取最大值 } p[t]++;//该单词出现一次,关联数+1 } for(auto i:v){//遍历单词数组 if(i.size()<len)for(int j=i.size();j<len;j++)cout<<" ";//如果不是最长的单词长,打印空格补齐 cout<<i<<":"; for(int j=0;j<p[i];j++)cout<<"*"; cout<<p[i]<<endl;//打印该单词关联的值 } return 0; }
0.0分
6 人评分
C语言训练-求PI* (C语言代码)浏览:882 |
2^k进制数 (C++代码)使用递归方法浏览:719 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:653 |
C语言训练-大、小写问题 (C语言代码)浏览:2349 |
C语言程序设计教程(第三版)课后习题10.1 (Java代码)浏览:1435 |
淘淘的名单 (C语言代码)答案错误???浏览:591 |
WU-printf基础练习2 (C++代码)浏览:1999 |
Wu-求圆的面积 (C++代码)浏览:1883 |
校门外的树 (C语言代码)浏览:692 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:632 |