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

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

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

输入格式:

输入说明:输入首先给出一个正整数N(≤105),随后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 ...

结尾无空行

代码如下:

#include<bits/stdc++.h>
using namespace std;
int main() {int N, maxI = 0;unordered_map<string, int> mp;cin >> N;getchar();while (N --) {string s, res;set<string> st;bool isTopic = false;getline(cin, s);for (auto l : s) {if (!isTopic && l == '#') {isTopic = 1;} else if (isTopic && l == '#' && res.size()) {isTopic = 0;if (res.back() == ' ') res.pop_back();if (!st.count(res)) mp[res] ++;st.insert(res);maxI = max(mp[res], maxI);res.clear();} else if (isTopic) {if (res.empty()) {if (!isalnum(l)) continue;else if (islower(l)) res.push_back(l - 32);else if (isupper(l)) res.push_back(l);} else if (!isalnum(l)) {if (res.back() == ' ') continue;else res.push_back(' ');} else if (isupper(l) && res.size()) {res.push_back(l + 32);} else res.push_back(l);   }}}vector<string> ans; for (auto l : mp) {if (l.second == maxI) ans.push_back(l.first);} sort(ans.begin(), ans.end());cout << ans[0] << endl << mp[ans[0]];if (ans.size() - 1) cout << endl << "And " << ans.size() - 1 << " more ...";
}

pta新浪微博热门话题相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  10. Python爬虫实列:新浪微博热门话题

    1.先找到数据所在的url 2.写代码获取数据,并保存 import requests import time import sys import os import xlwt, xlrd impor ...

最新文章

  1. python获取数据库用户名密码_在数据库中存储用户和密码
  2. 用创新技术增进互联网广告的行业价值
  3. ffmpeg+mencoder环境搭建和视频处理总结
  4. 如何基于Weex实现创新交互体验?手淘开源技术BindingX案例解析
  5. switch off c语言,逆向工程 | C 语言之 switch-case 分支
  6. ovs加dpdk出现EAL No free hugepages reported in hugepages-1048576kB
  7. 在vs.net实现向导式窗口_萨满佳作赏析 | 精神世界,灵魂向导,力量动物(1)...
  8. runtime java_Java runtime.getruntime()从执行命令行程序获得输出
  9. windows无法打开所需的文件C:\Sources\install.wim。
  10. 多层bom展开_K3 BOM 多级展开SQL
  11. Spoj REPEATS 后缀自动机+set
  12. VJC案例-风扇定时
  13. 腾讯云安装宝塔面板详细教程
  14. 【车载IoT】国标《电动汽车远程服务与管理系统技术规范》:车载设备设计规范
  15. 谈谈亲历的WMS、MES与ERP的集成之路
  16. Python大数据培训班特色优势及工作方向
  17. 9. elasticsearch 运维指令
  18. 英语流利说20190117
  19. 《Adobe Photoshop大师班:高级合成的秘密》—第1章有效的工作方法
  20. SAP S4 会计科目主数据相关类型的解释

热门文章

  1. hdoj2154跳舞毯
  2. 加拿大计算机工程研究生,加拿大维多利亚大学电子与计算机工程系副教授诚招硕士研究生 - 导师招生 - 小木虫 - 学术 科研 互动社区...
  3. 利用python对资产收益率进行正态检验
  4. 彻底关闭Chrome浏览器自动更新
  5. 小米系列手机MIUI12系统升级详细教程
  6. Android在GoogleMap(百度地图)实现自定义指南针旋转与回正功能
  7. matlab教程 振动,Matlab振动程序-代码作业
  8. 五.java入门【循环语句】
  9. processing图片粒子化_谈谈文字图片粒子化
  10. word excel如何用印章生成器软件在线制作电子印章 电子公章图片