解题思路:
单词数量和单词相关联,容易想到关联容器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分
160 人评分
C语言程序设计教程(第三版)课后习题9.2 (C语言代码)浏览:739 |
C语言训练-求1+2!+3!+...+N!的和 (C语言代码)浏览:2494 |
震宇大神的杀毒软件 (C语言代码)浏览:1334 |
C语言训练-求s=a+aa+aaa+aaaa+aa...a的值 (C++代码)(手动优化一下计算)浏览:1358 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:745 |
P1002 (C语言代码)浏览:1019 |
矩阵乘法 (C++代码)浏览:1652 |
【出圈】 (C语言代码)浏览:589 |
A+B for Input-Output Practice (VI) (C++代码)浏览:441 |
大神老白 (C语言代码)浏览:689 |