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

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

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

输入格式:

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

flag标记#出现,只记录每对#之间的字符,对于非英文数字字符换成空格,开头结尾都不能有空格且词间空格只有一个。代码:
#include <cstdio>
#include <iostream>
#include <cstring>
#include <map>
#include <algorithm>

using namespace std;
char s[150],ans[150],ch;
int n,num,mnum;
map<string,int> mp;
int main() {
    scanf("%d",&n);
    getchar();
    for(int i = 0;i < n;i ++) {
        int c = 0,flag = 0;
        map<string,bool> tnum;
        while((ch = getchar()) != ‘\n‘) {
            if(flag == 1) {
                if(ch == ‘#‘) {
                    flag = 0;
                    while(c && s[c - 1] == ‘ ‘) c --;
                    s[c] = 0;
                    if(!c) continue;
                    c = 0;
                    if(!tnum[s]) {
                        mp[s] ++;
                        if(mp[s] > mnum) {
                            num = 1;
                            mnum = mp[s];
                            strcpy(ans,s);
                        }
                        else if(mp[s] == mnum) {
                            if(strcmp(s,ans) < 0) strcpy(ans,s);
                            num ++;
                        }
                    }
                    tnum[s] = true;
                }
                else if(isalnum(ch)) s[c ++] = tolower(ch);
                else if(c && s[c - 1] != ‘ ‘) s[c ++] = ‘ ‘;
            }
            else if(ch == ‘#‘) flag = 1;
        }
    }
    ans[0] = toupper(ans[0]);
    printf("%s\n%d\n",ans,mnum);
    if(num > 1) printf("And %d more ...",num - 1);
    return 0;
}

原文地址:https://www.cnblogs.com/8023spz/p/12298900.html

时间: 2024-10-11 13:33:44

7-46 新浪微博热门话题 (30分)的相关文章

Python 获取新浪微博的热门话题 (API)

#!/usr/bin/python # -*- coding: utf-8 -*- ''' Created on 2014-06-27 @author: guaguastd ''' import json # Refer to http://blog.csdn.net/guaguastd/article/details/33664443 from login import weibo_login # sina weibo basic secret information APP_KEY = ''

pta08-图7 公路村村通 (30分)

08-图7 公路村村通   (30分) 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本. 输入格式: 输入数据包括城镇数目正整数N(≤1000)和候选道路数目M(≤3N):随后的M行对应M条道路,每行给出3个正整数,分别是该条道路直接连通的两个城镇的编号以及该道路改建的预算成本.为简单起见,城镇从1到N编号. 输出格式: 输出村村通需要的最低成本.如果输入数据不足以保证畅通,则输出−1,表示需要建设更多公路. 输入样例: 6

5-10 公路村村通 (30分)

5-10 公路村村通   (30分) 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本. 输入格式: 输入数据包括城镇数目正整数NN(\le 1000≤1000)和候选道路数目MM(\le 3N≤3N):随后的MM行对应MM条道路,每行给出3个正整数,分别是该条道路直接连通的两个城镇的编号以及该道路改建的预算成本.为简单起见,城镇从1到NN编号. 输出格式: 输出村村通需要的最低成本.如果输入数据不足以保证畅通,则输出-1?1,

pta5-9 Huffman Codes (30分)

5-9 Huffman Codes   (30分) In 1953, David A. Huffman published his paper "A Method for the Construction of Minimum-Redundancy Codes", and hence printed his name in the history of computer science. As a professor who gives the final exam problem o

新浪热门微博、热门话题抓取

A.为什么要做这个功能? 最近微博和微信开放平台的二次开发整的貌似蛮火,但做过微博开放平台的二次开发的人都会知道,新浪提供的微博访问接口并不是那么完美,有众多限制(调用频率限制.接口级别限制),对于没有经过审核通过高级接口的用户而言,要想通过API来实现这个功能,我只能说一句呵呵. B.实现方式与步骤? 1.WinForm 步骤1:调用内置控件WebBrowser对象来加载热门微博地址. 步骤2:  在后台用正则表达式解析要抓取HTML的片段,复杂的抓取往往需要程序员的正则表达式的掌握程度比较好

7-11 关键活动(30 分)

7-11 关键活动(30 分) 假定一个工程项目由一组子任务构成,子任务之间有的可以并行执行,有的必须在完成了其它一些子任务后才能执行."任务调度"包括一组子任务.以及每个子任务可以执行所依赖的子任务集. 比如完成一个专业的所有课程学习和毕业设计可以看成一个本科生要完成的一项工程,各门课程可以看成是子任务.有些课程可以同时开设,比如英语和C程序设计,它们没有必须先修哪门的约束:有些课程则不可以同时开设,因为它们有先后的依赖关系,比如C程序设计和数据结构两门课,必须先学习前者. 但是需要

1034 Head of a Gang (30 分)

1034 Head of a Gang (30 分) One way that the police finds the head of a gang is to check people's phone calls. If there is a phone call between Aand B, we say that A and B is related. The weight of a relation is defined to be the total time length of

1030 Travel Plan (30 分)

1030 Travel Plan (30 分) A traveler's map gives the distances between cities along the highways, together with the cost of each highway. Now you are supposed to write a program to help a traveler to decide the shortest path between his/her starting ci

PAT甲级——1131 Subway Map (30 分)

可以转到我的CSDN查看同样的文章https://blog.csdn.net/weixin_44385565/article/details/89003683 1131 Subway Map (30 分) In the big cities, the subway systems always look so complex to the visitors. To give you some sense, the following figure shows the map of Beijing