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

2023-11-20 17:40
文章标签 微博 15 30 新浪 热门话题

本文主要是介绍7-15 新浪微博热门话题 (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 ...

思路:

首先处理两个‘#’之间的字符串,是字母,数字的保留,字母、数字之间的其他符号统统用一个空格代替。另外开头和结尾的空格去掉。之后判断就可以了。

感谢该博客提供了卡我一中午的样例:https://blog.csdn.net/henuni/article/details/75907043

样例输入:

4
This is a #test of 1 topic#.
Another #Test of (1)topic.#
This is a #Hot# topic
This is a test of 1 topic

样例输出:

Test of 1 topic
2

卡掉一中午的代码:(因为没有考虑最后一个字符为‘#’的情况)

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll MOD = 2147493647;
const int maxn = 1e5+10;
typedef pair<string,int> pir;
vector<pir> v;
map<string,int> mp;string makeString(string str){string temp = "",res = "";for(int i = 0; i<str.length(); i++){if(i==0 && str[i]==' ')continue;if(i==str.length()-1 && str[i]==' ')continue;temp+=str[i];}return temp;
}void init() {int n;string str;v.push_back(pir("@",1000));cin>>n;getchar();for(int kk = 0; kk<n; kk++) {getline(cin,str);string tmp = "";set<string> s;set<string>::iterator it;for(int i = 0; i<str.length(); i++) {if(str[i]=='#') {i++;while(str[i]!='#' && i<str.length()) {if(isupper(str[i])) {tmp += tolower(str[i]);i++;} else if(islower(str[i])) {tmp += str[i];i++;}else if(str[i]>='0'&&str[i]<='9'){tmp += str[i];i++;}else if(str[i]==' ') {//aaa#aa@@@@bb#while(i+1<str.length() && str[i+1]==' ')i++;tmp += str[i];//str[i];i++;}elsei++;}if(i>=str.length())break;else if(str[i]=='#') {tmp = makeString(tmp);//cout<<tmp<<endl;if(tmp!="")s.insert(tmp);tmp = "";}}}for(it=s.begin(); it!=s.end(); it++) {if(mp[*it]==0) {v.push_back(pir(*it,1));mp[*it] = v.size()-1;} else {int in = mp[*it];v[in].second++;}}s.clear();}
}bool cmd(pir a, pir b){if(a.second == b.second)return a.first<b.first;return a.second > b.second;
}int main() {init();sort(v.begin()+1,v.end(),cmd);int index = 0;for(int i = 2; i<v.size(); i++){if(v[i].second == v[1].second)index++;}string ans = v[1].first;ans[0] = ans[0]-'a'+'A';cout<<ans<<endl;cout<<v[1].second<<endl;if(index>0)cout<<"And "<<index<<" more ..."<<endl;return 0;
}
View Code

完全通过的代码:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll MOD = 2147493647;
const int maxn = 1e5+10;
typedef pair<string,int> pir;
vector<pir> v;
map<string,int> mp;string makeString(string str){string temp = "",res = "";for(int i = 0; i<str.length(); i++){if(i==0 && str[i]==' ')continue;if(i==str.length()-1 && str[i]==' ')continue;temp+=str[i];}return temp;
}bool judge(char ch){if(isupper(ch) || islower(ch) || (ch>='0'&&ch<='9') || ch=='#')return false;return true;
}void init() {int n;string str;v.push_back(pir("@",1000));cin>>n;getchar();for(int kk = 0; kk<n; kk++) {getline(cin,str);string tmp = "";set<string> s;set<string>::iterator it;for(int i = 0; i<str.length(); i++) {if(str[i]=='#') {i++;while(str[i]!='#' && i<str.length()) {if(isupper(str[i])) {tmp += tolower(str[i]);i++;} else if(islower(str[i])) {tmp += str[i];i++;}else if(str[i]>='0'&&str[i]<='9'){tmp += str[i];i++;}else {while(i+1<str.length() && judge(str[i+1]))i++;tmp += ' ';//str[i];i++;}}if(i>=str.length())break;else if(str[i]=='#') {tmp = makeString(tmp);//cout<<tmp<<endl;
                    s.insert(tmp);tmp = "";}}}for(it=s.begin(); it!=s.end(); it++) {if(mp[*it]==0) {v.push_back(pir(*it,1));mp[*it] = v.size()-1;} else {int in = mp[*it];v[in].second++;}}s.clear();}
}bool cmd(pir a, pir b){if(a.second == b.second)return a.first<b.first;return a.second > b.second;
}int main() {init();sort(v.begin()+1,v.end(),cmd);int index = 0;for(int i = 2; i<v.size(); i++){if(v[i].second == v[1].second)index++;}string ans = v[1].first;ans[0] = ans[0]-'a'+'A';cout<<ans<<endl;cout<<v[1].second<<endl;if(index>0)cout<<"And "<<index<<" more ..."<<endl;return 0;
}
View Code

 

转载于:https://www.cnblogs.com/sykline/p/9779367.html

这篇关于7-15 新浪微博热门话题 (30 分)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/396319

相关文章

shell脚本自动删除30天以前的文件(最新推荐)

《shell脚本自动删除30天以前的文件(最新推荐)》该文章介绍了如何使用Shell脚本自动删除指定目录下30天以前的文件,并通过crontab设置定时任务,此外,还提供了如何使用Shell脚本删除E... 目录shell脚本自动删除30天以前的文件linux按照日期定时删除elasticsearch索引s

TP-Link PDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务

《TP-LinkPDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务》近期,路由器制造巨头普联(TP-Link)在用户群体中引发了一系列重要变动,上个月,公司发出了一则通知,明确要求所... 路由器厂商普联(TP-Link)上个月发布公告要求所有用户必须完成实名认证后才能继续使用普联提供的 D

mysql-8.0.30压缩包版安装和配置MySQL环境过程

《mysql-8.0.30压缩包版安装和配置MySQL环境过程》该文章介绍了如何在Windows系统中下载、安装和配置MySQL数据库,包括下载地址、解压文件、创建和配置my.ini文件、设置环境变量... 目录压缩包安装配置下载配置环境变量下载和初始化总结压缩包安装配置下载下载地址:https://d

Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单

《Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单》:本文主要介绍Springboot的ThreadPoolTaskScheduler线... 目录ThreadPoolTaskScheduler线程池实现15分钟不操作自动取消订单概要1,创建订单后

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

30常用 Maven 命令

Maven 是一个强大的项目管理和构建工具,它广泛用于 Java 项目的依赖管理、构建流程和插件集成。Maven 的命令行工具提供了大量的命令来帮助开发人员管理项目的生命周期、依赖和插件。以下是 常用 Maven 命令的使用场景及其详细解释。 1. mvn clean 使用场景:清理项目的生成目录,通常用于删除项目中自动生成的文件(如 target/ 目录)。共性规律:清理操作

2024网安周今日开幕,亚信安全亮相30城

2024年国家网络安全宣传周今天在广州拉开帷幕。今年网安周继续以“网络安全为人民,网络安全靠人民”为主题。2024年国家网络安全宣传周涵盖了1场开幕式、1场高峰论坛、5个重要活动、15场分论坛/座谈会/闭门会、6个主题日活动和网络安全“六进”活动。亚信安全出席2024年国家网络安全宣传周开幕式和主论坛,并将通过线下宣讲、创意科普、成果展示等多种形式,让广大民众看得懂、记得住安全知识,同时还

小技巧绕过Sina Visitor System(新浪访客系统)

0x00 前言 一直以来,爬虫与反爬虫技术都时刻进行着博弈,而新浪微博作为一个数据大户更是在反爬虫上不遗余力。常规手段如验证码、封IP等等相信很多人都见识过…… 当然确实有需要的话可以通过新浪开放平台提供的API进行数据采集,但是普通开发者的权限比较低,限制也比较多。所以如果只是做一些简单的功能还是爬虫比较方便~ 应该是今年的早些时候,新浪引入了一个Sina Visitor Syst

Adblock Plus官方规则Easylist China说明与反馈贴(2015.12.15)

-------------------------------特别说明--------------------------------------- 视频广告问题:因Adblock Plus的局限,存在以下现象,优酷、搜狐、17173黑屏并倒数;乐视、爱奇艺播放广告。因为这些视频网站的Flash播放器被植入了检测代码,而Adblock Plus无法修改播放器。 如需同时使用ads