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

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

输入格式:

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

输出格式:

第一行输出被最多条微博提到的话题,第二行输出其被提到的微博条数。如果这样的话题不唯一,则输出按字母序最小的话题,并在第三行输出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<iostream>
#include<map>
#include<cstdio>
#include<vector>
#include<cstring>
#include<algorithm>
#include<cctype>
using namespace std;
string trans(string s){string ss;for(int i=0;i<s.size();i++){if(s[i]>='A'&&s[i]<='Z')s[i]=tolower(s[i]);else if(s[i]>='a'&&s[i]<='z'||s[i]>='0'&&s[i]<='9')s[i]=s[i];else s[i]=' ';}if(s[0]==' ')for(int i=1;i<s.size();i++) ss.push_back(s[i]);else if(s[(s.size()-1)]==' ')for(int i=0;i<s.size()-1;i++)ss.push_back(s[i]);else ss=s;return ss;
}int main(){
int n;
char st[1000];
vector<int> v;
map<string ,int > flag;
map<string ,int > m;
cin>>n;getchar();
for(int i=0;i<n;i++){flag.clear();gets(st);string s=st;v.clear();for(int i=0;s[i];i++){if(s[i]=='#')v.push_back(i);}while(v.size()){int a=v.front();v.erase(v.begin());int b=v.front();v.erase(v.begin());string s1=s.substr(a+1,b-a-1);string s2= trans(s1);//cout<<endl<<s2<<"$$$$$$$$"<<endl;s2[0]=toupper(s2[0]);if(!flag[s2]){m[s2]++;flag[s2]=1;}}
}
int cnt=0;int maxn=0;string topic;map<string ,int >::iterator it;for(it= m.begin();it!=m.end();it++){string key=it->first;int value = it->second;// cout<<"##########value"<<value<<" key"<<key<<endl;if(value>maxn){maxn=value;cnt=0;topic=key;}else if(value==maxn)cnt++;}cout<<topic<<endl<<maxn<<endl;if(cnt) cout << "And " << cnt << " more ..." << endl;return 0;}

转载于:https://www.cnblogs.com/xuyibao/p/8029484.html

7-18(查找) 新浪微博热门话题(30 分)相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. 根据姓名得到名字首字母
  2. 数据帧,数据包,报文段,报文,分组,数据包的概念和区别
  3. Zookeeper超详细的面试题
  4. Java 8中的默认方法(Defender方法)简介
  5. Android Setting 日期相关API,自定义DatePicker
  6. java list 重复对象_list集合去除重复对象的实现
  7. vultarget-a红日靶场全面解析(完整版)
  8. 数学作图工具_非常实用的九个程序员工具网站
  9. ${pram.name}
  10. 空间直角坐标系(xyz)与大地坐标系(经纬高)的转换
  11. 高一计算机课期中考试总结反思,高一期中考试总结反思
  12. 易优家:重新定义食品包装安全
  13. vscode常用插件-Auto Close Tag
  14. cocos网络通信php,Cocos2D-X服务器的网络通信编程
  15. Apache服务器访问过慢分析及解决
  16. 关于几个箭头符号含义的介绍
  17. 仙剑奇侠传7御灵有什么用?御灵的作用与培养策略
  18. vue全家桶-组件内部应用守卫简洁版-防止输入框未保存的数据丢失
  19. wins10 系统晚上自动重启?解决办法:一旦点击就会令程序员生无可恋的msconfig——诊断启动(重启)置之死地而后生!!!
  20. JavaWeb自我总结

热门文章

  1. java地理位置的获取_Java 根据 IP 获取地理位置
  2. 小程序地理位置接口申请
  3. 腾讯云如何设置二级域名?
  4. jvm如何排查生产环境cpu飙高的问题
  5. 线上问题处理1---CPU飙高问题定位
  6. shell的logo含义_华为logo的寓意是什么
  7. 净资产收益率ROE连续3年超过15%的股票排名
  8. 域策略(3)——限制用户使用USB移动存储设备
  9. 菱形c语言思路,c语言打印菱形(c语言打印菱形思路)
  10. 利用计算机指令清理垃圾,Win7电脑清理垃圾的运行命令代码是什么?