请编写程序,对一段英文文本,统计其中所有不同单词的个数,以及词频最大的前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 <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cctype>
#include <vector>
#include <map>
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;
}
vector<pair<string, int> > v;
map<string, int> m;
int main(){
char str[100];
string word;
map<string, int>::iterator it;
int start = 0;
char ch;
while(ch = getchar()) {
if(ch >= 'a' && ch <= 'z' || ch >= 'A' && ch <= 'Z' || ch >= '0' && ch <= '9' || ch == '_') {
if(ch >= 'A' && ch <= 'Z') ch = ch - 'A' + 'a';
str[start++] = ch;
}
else if(start > 0) {
if(start >= 15) start = 15;
str[start] = 0;
start = 0;
word = str;
it = m.find(word);
if(it != m.end()) {
(it->second)++;
}
else {
m[word] = 1;
}
}
if(ch == '#') break;
}
for(it = m.begin(); it != m.end(); it++) {
v.push_back(make_pair(it->first, it->second));
}
sort(v.begin(), v.end(), cmp);
vector<pair<string, int> > :: iterator itv;
cout << v.size() << endl;
int ans = v.size() / 10;
for(itv = v.begin(); itv != v.begin() + ans; itv++) {
cout << itv->second << ':' << itv->first << endl;
}
return 0;

}

转载于:https://www.cnblogs.com/linguiquan/p/9050017.html

词频统计(30 分)相关推荐

  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. 数据结构课设 词频统计

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

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

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

  6. 8-2 sdust-Java-文件读取与统计【人工判编程题】 (30 分)

    8-2 sdust-Java-文件读取与统计[人工判编程题] (30 分) 在F:\file\有一个纯文本文件article.txt,里面是英文的文章.编写Java程序,读取该文章内容,统计其中的单词 ...

  7. 【Python养成】:案例(身高体重BMI值、模拟用户登录系统、键盘录入10个学生的成绩,计算出最高分、最低分和成绩总和、词频统计)

    案例题目:身高体重BMI值 计算成人身高体重指数BMI值.公式:bmi = 体重 / (身高 * 身高),体重的单位是千克,身高的单位是米 .键盘输入身高和体重值,计算bmi值,并根据结果对用户做出友 ...

  8. PAT甲级1049 Counting Ones (30 分):[C++题解]统计1的个数、数位统计

    文章目录 题目分析 题目链接 题目分析 来源:PAT网站 分析: 以数字abcdefg这个7位数字为例,说一下本题的思路. 1)数字1在每一位出现的次数. 2)以第d位为例,第d位的取值可以分为3种情 ...

  9. 组合数据类型练习,英文词频统计实例9-21

    1.列表实例:由字符串创建一个作业评分列表,做增删改查询统计遍历操作.例如,查询第一个3分的下标,统计1分的同学有多少个,3分的同学有多少个等. >>>score=list('212 ...

  10. Python项目实践:文本词频统计、软文的诗词风

    一.文本词频统计 # CalHamletV1.py def getText():txt = open("C:/Users/520/Desktop/Hamlet.txt", &quo ...

最新文章

  1. UTA研究团队提出首个3D点云+GAN新方法,让机器人“眼神”更犀利 | AI日报
  2. zynq学习04 zynq中PS通过MIO控制LED
  3. HelloFresh迁移至新的API网关,实现微服务架构
  4. 取色器 for Mac
  5. 机器学习速成课程 | 练习 | Google Development——编程练习:合成特征和离群值
  6. dede手机站对应的php,Dede织梦(手机)移动端访问PC网址自动跳转对应m网址
  7. 这些问题你遇见过吗?职场中,新人必须堤防的6大陷阱
  8. python:使用sklearn 计算 precision、recall、F1 score(多分类)
  9. 金融领域7大数据科学案例
  10. ubuntu 下android设备找到fastboot驱动
  11. 2019年数学建模美赛经验总结
  12. 全网目前最全python例子(附源码)八、Python实战
  13. leetcode【中等】781、森林中的兔子
  14. html5标题分栏,网页分栏设计和不同的CSS样式
  15. 国内首款安全三级密码卡诞生!
  16. 国内优秀的设计公司有哪些?
  17. DynamicModuleException: MENIFEST.MF文件未找到
  18. office:word在编辑内容时反应迟钝的解决办法
  19. 用php调用接口api
  20. Windows消息响应机制之四:PostQuitMessage和GetMessage函数

热门文章

  1. 叶子提取物的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  2. 北京大学2018计算机学科夏令营上机考试
  3. 数据库实验5---存储过程和存储函数
  4. 第R1周:RNN-心脏病预测
  5. ubuntu18完全安装Openpose指南
  6. C/Cpp贪吃蛇(数组)
  7. kafka官方文档中文翻译(kafka参数解释)
  8. 将json数据格式转化成excel插件JsonExportExcel.js的使用demo
  9. eclipse安装、优化、配置、插件添加整理
  10. kotlin-android-extensions插件也被废弃了?扶我起来