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

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

输入格式:
输入说明:输入首先给出一个正整数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 ...

解题思路:
题目描述得太复杂了,实际要求如下:
1、第一个有效字符转化为大写(有效字符指字母和数字)
2、所有无效字符都视为空格,多个空格则保留一个,前面和后面均不能带空格
3、符合上面两个条件了再比较大小,取答案就行了

代码:

#include<iostream>
#include<string>
#include<map>
using namespace std;
int main()
{map<string,int>a,b;int c,d,e,f,g,max=0,ans=0;string h,j[200],k;char i[150];cin>>c;getchar();while(c--){getline(cin,h);f=0;for(d=0;d<h.size();d++){e=0;g=0;if(h[d]=='#'){while(++d){if(h[d]=='#')break;if(h[d]>='0'&&h[d]<='9'||h[d]>='a'&&h[d]<='z'||h[d]>='A'&&h[d]<='Z'){if(e==0&&h[d]>='a'&&h[d]<='z')h[d]+='A'-'a';i[e++]=h[d];g=1;}else if(e!=0&&g)//将其它字符都视为空格{i[e++]=' ';g=0;}}if(i[e-1]==' ')e--;//如果最后一个是空格则删掉i[e]='\0';j[f]=i;if(b[j[f]]==0)//控制单句不重复计算{b[j[f]]=1;a[j[f]]++;}f++;}}while(f--)//条件重置b[j[f]]=0;}map<string,int>::iterator it;for(it=a.begin();it!=a.end();it++)//遍历搜索答案{if(max<it->second){max=it->second;//出现的最大微博数k=it->first;ans=0;//同样次数的条数,置零}else if(max==it->second)//同样次数的条数ans++;}cout<<k<<endl<<max<<endl;if(ans)cout<<"And "<<ans<<" more ..."<<endl;
}

进阶实验5-3.2 新浪微博热门话题 (字符串操作)相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. Eclipse中配置Tomcat
  2. 创建SSH keys
  3. anki vector robot入门语音指令大全
  4. 一个机器周期 计算机_计算机科学组织| 机器周期
  5. SQL高手请进来一下,谢谢
  6. 《2015中国移动应用性能管理白皮书》欢迎来看
  7. nginx问题一则:nginx路径匹配特殊处理及增加cookie等二三事
  8. osg加载osgb数据_PCM点云数据处理软件功能使用第十六弹
  9. ikbc poker2
  10. python大麦网抢票_抢票攻略-大麦网
  11. 【波导】——理解群速度和相速度
  12. 计算机系十周年聚会邀请函,十周年同学聚会邀请函
  13. vue-router动态路由实践
  14. 一份来自28岁老程序员的自白
  15. 使用java代码返回树形结构的damo
  16. 2017年Go语言入门教程-徐培成-专题视频课程
  17. php 获取农历,PHP通过新历获取农历日期的方法
  18. 第10章 对象和类 -1
  19. L1-040. 最佳情侣身高差
  20. linux分区出现hfs,如何在Ubuntu中将HFS分区挂载为读/写?

热门文章

  1. java程序cpu突然飚高_fullGC 频繁导致CPU飙高
  2. 玩玩Spring之初章
  3. 《天才在左,疯子在右》读书随笔
  4. 华南农业大学C语言程序设计(实验六)
  5. 联想电脑u盘安装Linux,如何使用u盘安装linux系统
  6. 菱形c语言思路,c语言打印菱形(c语言打印菱形思路)
  7. 服务端验证防水墙验证码向远程发送请求并验证的方法
  8. 埃特巴什码(Atbash Cipher)
  9. 【研一周小结】第三周个人学习总结
  10. 服务器拒绝mac访问共享文件,Mac怎样访问局域网共享文件