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. 高危Windows 0day漏洞:看一眼就中毒
  2. QT关联容器QMap,QHash的Key值自动排序问题
  3. 4header组件开发
  4. SpringBatch 监听器之Job监听器(JobExecutionListener)和Step监听器(StepExecutionListener)(五)
  5. 全志 强制隐藏导航栏状态栏 Patch
  6. C#刷遍Leetcode面试题系列连载(4): No.633 - 平方数之和
  7. java项目中外接扫描仪无法使用_java – 扫描仪行不可用错误
  8. LAMP平台下构建Postfix邮件服务器
  9. Cisco无线AP的配置
  10. 看CarbonData如何用四招助力Apache Spark
  11. 京东后台图片优化技巧
  12. OpenCV实战2——进行颜色检测(HSV颜色空间)和分割的隐形斗篷
  13. mac pro M1(ARM)安装:ubuntu桌面版虚拟机(五)
  14. Web应用防火墙(WAF:Web Application Firewall)简介
  15. Rsync: @ERROR: Auth Failed On Module XXX错误原因及解决办法
  16. 想用QQ小程序流量主广告赚钱,你需要知道的知识!
  17. 爬虫项目(一)爬虫+jsoup轻松爬知乎
  18. 魔鬼与牧师——动作分离版
  19. (知乎)你是如何变的自律的
  20. 把MM照片变手绘卡通效果

热门文章

  1. WinForm 2.0 无代码DataGridView绑定
  2. python变量赋值方式_【Python入门学习】详谈python变量和变量赋值语句
  3. XAML实例教程系列 - 标记扩展(Markup Extensions)
  4. JAVA-1007. 素数对猜想 (20)
  5. erlang 小程序:整数序列,搜索和为正的最长子序列
  6. 精益企业中架构师的角色
  7. 进程间通信之管道与有名管道
  8. [jQuery] 按比例缩小图片
  9. 根据 List 对象中的某个字段进行排序
  10. matlab练习程序(图像放大/缩小,双立方插值)