词频统计(30 分)(map vector sort)
7-18 词频统计(30 分)
请编写程序,对一段英文文本,统计其中所有不同单词的个数,以及词频最大的前10%的单词。
所谓“单词”,是指由不超过80个单词字符组成的连续字符串,但长度超过15的单词将只截取保留前15个单词字符。而合法的“单词字符”为大小写字母、数字和下划线,其它字符均认为是单词分隔符。
输入格式:
输入给出一段非空文本,最后以符号#
结尾。输入保证存在至少10个不同的单词。
输出格式:
在第一行中输出文本中所有不同单词的个数。注意“单词”不区分英文大小写,例如“PAT”和“pat”被认为是同一个单词。
随后按照词频递减的顺序,按照词频:单词
的格式输出词频最大的前10%的单词。若有并列,则按递增字典序输出。
输入样例:
This is a test.The word "this" is the word with the highest frequency.Longlonglonglongword should be cut off, so is considered as the same as longlonglonglonee. But this_8 is different than this, and this, and this...#
this line should be ignored.
输出样例:(注意:虽然单词the
也出现了4次,但因为我们只要输出前10%(即23个单词中的前2个)单词,而按照字母序,the
排第3位,所以不输出。)
23
5:this
4:is
#include<cstdio>
#include<cstring>
#include<iostream>
#include<map>
#include<vector>
#include<algorithm>
using namespace std;
bool cmp(pair<string, int> a, pair<string, int> b)
{if(a.second != b.second) return a.second > b.second;else return a.first < b.first;
}
int main()
{vector<pair<string,int> >vec;map<string,int>mp;string s;char ch;while(~scanf("%c",&ch)){if(ch>='A'&&ch<='Z'||ch>='0'&&ch<='9'||ch>='a'&&ch<='z'||ch=='_'){if(ch>='A'&&ch<='Z')ch+=32;if(s.size()<15)s+=ch;//string可以直接相加 c++和java是真的像 }else if(ch=='#')break; else {if(s.size()==0)continue;mp[s]++;s.clear(); } }int i=0;map<string,int>::iterator it;for(it=mp.begin();it!=mp.end();it++){vec.push_back( make_pair(it->first,it->second));++i;}printf("%d\n",i);sort(vec.begin(),vec.end(),cmp);int gg=i/10;for(int i=0;i<gg;i++)cout<<vec[i].second<<":"<<vec[i].first<<endl;return 0;
}
词频统计(30 分)(map vector sort)相关推荐
- 数据结构查找-7-3 词频统计 (30 分)
7-3 词频统计 (30 分) 请编写程序,对一段英文文本,统计其中所有不同单词的个数,以及词频最大的前10%的单词. 所谓"单词",是指由不超过80个单词字符组成的连续字符串,但 ...
- 【PTA-python】第7章-1 词频统计 (30 分)--sys.stdin.read()读入到特定字符截至,双重排序条件key=lambda item:(-item[1], item[0])
第7章-1 词频统计 分析 双重排序条件:字典序,数字降序 题目 解法 自解 参考代码截断到`#`输入的代码 分析 遇到含有回车的无效输入,while循环如何处理.同过input()字符串不断串联起来 ...
- 第7章-1 词频统计 (30 分)
致读者:本人是一名通信专业学生,仅学了4天Python ,难免有些地方写的很笨拙. 写博客一方面是为了记录自己的学习过程中遇到的问题和思考,一方面是希望能够帮助到很多和自己一样处于困惑的读者. 水平有 ...
- PTA----周游世界 (30分)(vector,dfs)
旧人旧事更值得怀念,或悲或喜每个人身上都承载着某一段时光,但是我会永远清澈永远疯狂永远浪漫.没有人能回到过去重新活过,但你我都可以从现在开始,决定我们未来的模样. ...
- 7-46 新浪微博热门话题 (30分)--map
1 #include<iostream> 2 #include <map> 3 #include <string> 4 #include <cstring&g ...
- 数据结构课设 词频统计
5-20 词频统计 (30分) 请编写程序,对一段英文文本,统计其中所有不同单词的个数,以及词频最大的前10%的单词. 所谓"单词",是指由不超过80个单词字符组成的连续字符串 ...
- python软件和rost软件哪个更好_ROST-CM软件分词和词频统计用法体验
ROST作为一款优秀的内容挖掘工具,在自然语言处理上提供一系列能够快速上手使用的功能,其中"分词"功能也是广为使用的.我们在对文本进行分词处理的过程中,由于词库是固定的,所以不管是 ...
- Hadoop | MapReduce之 WordCount词频统计
WordCount词频统计 词频统计 WordCountMap.java // Map类,继承于org.apache.hadoop.mapreduce.Mapper; public class Wor ...
- 【CCCC】L3-003 社交集群 (30分),并查集模板,map排序
problem L3-003 社交集群 (30分) 当你在社交网络平台注册时,一般总是被要求填写你的个人兴趣爱好,以便找到具有相同兴趣爱好的潜在的朋友.一个"社交集群"是指部分兴趣 ...
- PAT甲级1111 Online Map (30分):[C++题解]两次dijkstra求单源最短路、保存路径、长度最短、时间最短
文章目录 题目分析 题目链接 题目分析 来源:acwing 分析:dijkstra求单源最短路的题目. 只是写两遍而已,第一遍求按照路径长度求,第二遍按照时间最少求. 另外加一个vector路径的判断 ...
最新文章
- Object C语法学习
- CSM+3PAR帮助XXX教育技术中心
- 数据中心节能环保政策汇总分析:2022年新建大型数据中心PUE需达到1.4以下
- 使用Jquery获取thymeleaf中checkbox的值
- 数据库技术基础:数据库与数据库管理系统概念介绍
- 论文浅尝 - ECIR2021 | 两种实体对齐方法的严格评估
- EJB3与EJB2的差别
- 杨洋python_杨洋老师 - 主页
- 【c++】指针常量与常量指针
- Linux下编译android源码的步骤
- php- osc,【原创】phpdesigner 使用OSC@GIT
- mysql联合索引原理
- 2个或2个以上路由器串联上网,在同一网段
- iOS 工程配置bundle identifier
- Hexo:语雀云端写作,Github Actions持续集成
- 穿插纸条 (第37-54关)解的不唯一性
- oracle 重建控制文件 恢复数据库
- 云服务器上传文件软件,云服务器上传文件软件
- 国科大学习资料--模式识别与机器学习(黄庆明)--期末复习题3(含答案)
- 函数柯里化的作用一:参数复用(正则匹配案例)
热门文章
- mysql表情符号_emoji等表情符号存mysql的方法
- 使用PS创造非凡动物形象
- 前端学习总结【103天】:CSS——不用JavaScript实现tab标签切换的两种方法
- 关于使用OpenXml向Excel插入数据的一点总结
- PostgreSQL导出导入schema相关
- Gephi可视化(二)——Gephi Toolkit叫板Prefuse
- Visual Studio 2012 RC 发布
- 还原 idea undo commit
- 【SpringMVC】@Controller 和 @RestController 区别
- sicp 3.9题解答