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)相关推荐

  1. 数据结构查找-7-3 词频统计 (30 分)

    7-3 词频统计 (30 分) 请编写程序,对一段英文文本,统计其中所有不同单词的个数,以及词频最大的前10%的单词. 所谓"单词",是指由不超过80个单词字符组成的连续字符串,但 ...

  2. 【PTA-python】第7章-1 词频统计 (30 分)--sys.stdin.read()读入到特定字符截至,双重排序条件key=lambda item:(-item[1], item[0])

    第7章-1 词频统计 分析 双重排序条件:字典序,数字降序 题目 解法 自解 参考代码截断到`#`输入的代码 分析 遇到含有回车的无效输入,while循环如何处理.同过input()字符串不断串联起来 ...

  3. 第7章-1 词频统计 (30 分)

    致读者:本人是一名通信专业学生,仅学了4天Python ,难免有些地方写的很笨拙. 写博客一方面是为了记录自己的学习过程中遇到的问题和思考,一方面是希望能够帮助到很多和自己一样处于困惑的读者. 水平有 ...

  4. PTA----周游世界 (30分)(vector,dfs)

    旧人旧事更值得怀念,或悲或喜每个人身上都承载着某一段时光,但是我会永远清澈永远疯狂永远浪漫.没有人能回到过去重新活过,但你我都可以从现在开始,决定我们未来的模样.                    ...

  5. 7-46 新浪微博热门话题 (30分)--map

    1 #include<iostream> 2 #include <map> 3 #include <string> 4 #include <cstring&g ...

  6. 数据结构课设 词频统计

    5-20 词频统计   (30分) 请编写程序,对一段英文文本,统计其中所有不同单词的个数,以及词频最大的前10%的单词. 所谓"单词",是指由不超过80个单词字符组成的连续字符串 ...

  7. python软件和rost软件哪个更好_ROST-CM软件分词和词频统计用法体验

    ROST作为一款优秀的内容挖掘工具,在自然语言处理上提供一系列能够快速上手使用的功能,其中"分词"功能也是广为使用的.我们在对文本进行分词处理的过程中,由于词库是固定的,所以不管是 ...

  8. Hadoop | MapReduce之 WordCount词频统计

    WordCount词频统计 词频统计 WordCountMap.java // Map类,继承于org.apache.hadoop.mapreduce.Mapper; public class Wor ...

  9. 【CCCC】L3-003 社交集群 (30分),并查集模板,map排序

    problem L3-003 社交集群 (30分) 当你在社交网络平台注册时,一般总是被要求填写你的个人兴趣爱好,以便找到具有相同兴趣爱好的潜在的朋友.一个"社交集群"是指部分兴趣 ...

  10. PAT甲级1111 Online Map (30分):[C++题解]两次dijkstra求单源最短路、保存路径、长度最短、时间最短

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析:dijkstra求单源最短路的题目. 只是写两遍而已,第一遍求按照路径长度求,第二遍按照时间最少求. 另外加一个vector路径的判断 ...

最新文章

  1. Object C语法学习
  2. CSM+3PAR帮助XXX教育技术中心
  3. 数据中心节能环保政策汇总分析:2022年新建大型数据中心PUE需达到1.4以下
  4. 使用Jquery获取thymeleaf中checkbox的值
  5. 数据库技术基础:数据库与数据库管理系统概念介绍
  6. 论文浅尝 - ECIR2021 | 两种实体对齐方法的严格评估
  7. EJB3与EJB2的差别
  8. 杨洋python_杨洋老师 - 主页
  9. 【c++】指针常量与常量指针
  10. Linux下编译android源码的步骤
  11. php- osc,【原创】phpdesigner 使用OSC@GIT
  12. mysql联合索引原理
  13. 2个或2个以上路由器串联上网,在同一网段
  14. iOS 工程配置bundle identifier
  15. Hexo:语雀云端写作,Github Actions持续集成
  16. 穿插纸条 (第37-54关)解的不唯一性
  17. oracle 重建控制文件 恢复数据库
  18. 云服务器上传文件软件,云服务器上传文件软件
  19. 国科大学习资料--模式识别与机器学习(黄庆明)--期末复习题3(含答案)
  20. 函数柯里化的作用一:参数复用(正则匹配案例)

热门文章

  1. mysql表情符号_emoji等表情符号存mysql的方法
  2. 使用PS创造非凡动物形象
  3. 前端学习总结【103天】:CSS——不用JavaScript实现tab标签切换的两种方法
  4. 关于使用OpenXml向Excel插入数据的一点总结
  5. PostgreSQL导出导入schema相关
  6. Gephi可视化(二)——Gephi Toolkit叫板Prefuse
  7. Visual Studio 2012 RC 发布
  8. 还原 idea undo commit
  9. 【SpringMVC】@Controller 和 @RestController 区别
  10. sicp 3.9题解答