原题链接:蓝桥杯算法提高VIP-统计单词数
解题思路:
单词数量和单词相关联,容易想到关联容器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分
3 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复