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

新浪微博可以在发言中嵌入“话题”,即将发言中的话题文字写在一对“#”之间,就可以生成话题链接,点击链接可以看到有多少人在跟自己讨论相同或者相似的话题。新浪微博还会随时更新热门话题列表,并将最热门的话题放在醒目的位置推荐大家关注。

本题目要求实现一个简化的热门话题推荐功能,从大量英文(因为中文分词处理比较麻烦)微博中解析出话题,找出被最多条微博提到的话题。

输入格式:

输入说明:输入首先给出一个正整数N(≤10​5​​),随后N行,每行给出一条英文微博,其长度不超过140个字符。任何包含在一对最近的#中的内容均被认为是一个话题,输入保证#成对出现。

输出格式:

第一行输出被最多条微博提到的话题,第二行输出其被提到的微博条数。如果这样的话题不唯一,则输出按字母序最小的话题,并在第三行输出And k more ...,其中k是另外几条热门话题的条数。输入保证至少存在一条话题。

注意:两条话题被认为是相同的,如果在去掉所有非英文字母和数字的符号、并忽略大小写区别后,它们是相同的字符串;同时它们有完全相同的分词。输出时除首字母大写外,只保留小写英文字母和数字,并用一个空格分隔原文中的单词。

输入样例:

4
This is a #test of topic#.
Another #Test of topic.#
This is a #Hot# #Hot# topic
Another #hot!# #Hot# topic

输出样例:

Hot
2
And 1 more ...

注意:

分隔(易误):"#a ! b#"  和"a@&b"的话题都为 "a b",思路是特殊符号替换为空格,多个空格进行合并

首尾不能有空格

#include<iostream>
#include<map>
#include<string>
using namespace std;
struct Topic {int n;            //话题出现次数bool used = false; //判断是否在一条微博提到过这个话题
};
int main(){int n, count = 0;string str;char ch;pair<string, Topic> hot;      //记录最热话题map<string, Topic> result;        //记录所有话题cin >> n;getchar();for (int i = 0; i < n; ++i) {while ((ch = getchar()) != '\n') {if (ch == '#') {str.clear();while (true) {ch = getchar();if (ch == '#' || ch == '\n')break;else if (isdigit(ch) || isalpha(ch))str.push_back(tolower(ch));else if (!str.empty() && str.back() != ' ')     //添加分隔符str.push_back(' ');}if (str.back() == ' ')str.pop_back();          //去除尾部空格str[0] = toupper(str[0]);                      //首字母大写if (!result[str].used) {                     //话题计数result[str].n++;result[str].used = true;if (result[str].n == hot.second.n) {     //相同更新并列个数count++;if (str < hot.first)                 //根据字符字典序更新最热话题hot.first = str;}else if (result[str].n > hot.second.n) {    //更新最热话题count = 0;                             //重置并列个数hot = { str,result[str] };}}}}for (auto& it : result)              //重置it.second.used = false;}cout << hot.first << endl << hot.second.n << endl;if (count)cout << "And " << count << " more ..." << endl;return 0;
}

PAT结构与算法7-46 新浪微博热门话题 (50行精简 测试点分析)相关推荐

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

    5-46 新浪微博热门话题 (30分) 新浪微博可以在发言中嵌入"话题",即将发言中的话题文字写在一对"#"之间,就可以生成话题链接,点击链接可以看到有多少人在 ...

  2. 数据结构PTA 进阶实验5-3.2 新浪微博热门话题

    进阶实验5-3.2 新浪微博热门话题 题目 解法 题目 新浪微博可以在发言中嵌入"话题",即将发言中的话题文字写在一对"#"之间,就可以生成话题链接,点击链接可 ...

  3. 数据结构PTA习题:进阶实验5-3.2 新浪微博热门话题 (30分)

    进阶实验5-3.2 新浪微博热门话题 (30分) 新浪微博可以在发言中嵌入"话题",即将发言中的话题文字写在一对"#"之间,就可以生成话题链接,点击链接可以看到 ...

  4. 7-46 新浪微博热门话题(字符串)

    题目链接:7-46 新浪微博热门话题 考查知识:字符串 题意描述: 给定n条微博,每条微博里有若干话题,试统计被最多条微博提到的话题. 思路简析: 首先对#号位置进行记录,然后用a.substr(开始 ...

  5. 7-46 新浪微博热门话题 (30 分)(思路+详解+set + map)pta逐个点过的 来呀兄弟们

    一 :题目 新浪微博可以在发言中嵌入"话题",即将发言中的话题文字写在一对"#"之间,就可以生成话题链接,点击链接可以看到有多少人在跟自己讨论相同或者相似的话题 ...

  6. 7-46 新浪微博热门话题

    ➳ENTRY 新浪微博可以在发言中嵌入"话题",即将发言中的话题文字写在一对"#"之间,就可以生成话题链接,点击链接可以看到有多少人在跟自己讨论相同或者相似的话 ...

  7. python爬取新浪微博热门话题保存到excel等文件

    第一步 在网页上登录新浪微博,获取登录cookie 先把它复制好先,进行第二步 第二步 废话不多说,直接上代码,把刚刚复制好的值,赋给co变量 # -*- coding: utf-8 -*- &quo ...

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

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

  9. PTA新浪微博热门话题(题面毒瘤)

    这道题的题目描述非常容易让人误解 测试点1容易过掉 一般没有问题 测试点2会出现k等于0的情况 这个时候最后一行是不输出的(题目没有写清楚) 测试点3容易出现PE 实际上是中间的处理过程存在问题 这里 ...

最新文章

  1. VLC 关键模块结构分析
  2. 南极冰盖数据集不如火星?借助无人机和机器学习,斯坦福学者着力挖掘最有价值数据...
  3. 俞敏洪:创业者应该避开的10个坑
  4. Kubernetes-native 弹性分布式深度学习系统
  5. 开始使用Google Analytics 示例
  6. 取得程序运行的目录[360度]
  7. liblfds 测试
  8. [国嵌攻略][125][总线设备驱动模型]
  9. 让软件自己写软件,机器编程未来会取代程序员吗?
  10. 实验六:流类库与I/O
  11. Futter基础第13篇: 实现Drawer侧边栏、以及侧边栏内容布局
  12. 关于人生的10个真相, 希望你越早知道越好
  13. 使用VB6.0编写管家婆服装----百胜服装ERP数据转换程序和通用SQL server查询程序的心得
  14. Tensorflow加载SavedModel模型过程源码阅读
  15. Perl读取文件信息
  16. 基于python开发植物大战僵尸
  17. python图片转素描风
  18. flutter 背景图片毛玻璃效果
  19. SpringBoot通过dubbo-spring-boot-starter整合Dubbo出现的问题
  20. 三大运营商物联卡哪家网络稳定

热门文章

  1. 互联网人出游必备清单
  2. IDDPM原理和代码剖析
  3. 文末有福利 | IT从业者应关注哪些技术热点?
  4. 亿赛通为航空航天产业搭建数据安全保障体系
  5. fork,wait等基本系统调用
  6. Day4 | 中国移动物联网公司数字化产品部研发经理的分享
  7. python建立空矩阵_创建空矩阵Python
  8. 余淼杰老师 经济学原理复习笔记(宏观1) 2020-12-14
  9. 什么是DDR RAM DDR2 DDR3 DDR4 之间有什么区别
  10. 揭露广告联盟不为人知的骗局