題目:
本題目要求實現乙個簡化的熱門話題推薦功能,從大量英文(因為中文分詞處理比較麻煩)微博中解析出話題,找出被最多條微博提到的話題。
輸入格式:
輸入說明:輸入首先給出乙個正整數n(≤105),隨後n行,每行給出一條英文微博,其長度不超過140個字元。任何包含在一對最近的#
中的內容均被認為是乙個話題,輸入保證#
成對出現。
輸出格式:
第一行輸出被最多條微博提到的話題,第二行輸出其被提到的微博條數。如果這樣的話題不唯一,則輸出按字母序最小的話題,並在第三行輸出and k more ...
,其中k
是另外幾條熱門話題的條數。輸入保證至少存在一條話題。
注意:兩條話題被認為是相同的,如果在去掉所有非英文本母和數字的符號、並忽略大小寫區別後,它們是相同的字串;同時它們有完全相同的分詞。輸出時除首字母大寫外,只保留小寫英文本母和數字,並用乙個空格分隔原文中的單詞。
輸入樣例:
4this is a #test of topic#.
another #test of topic.#
this is a #hot# #hot# topic
another #hot!# #hot# topic
輸出樣例:
hot2
and 1 more ...
思路:
首先處理兩個『#』之間的字串,是字母,數字的保留,字母、數字之間的其他符號統統用乙個空格代替。另外開頭和結尾的空格去掉。之後判斷就可以了。
感謝該部落格提供了卡我一中午的樣例:
樣例輸入:
4this 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 usingview codenamespace
std;
typedef
long
long
ll;const ll mod = 2147493647
;const
int maxn = 1e5+10
;typedef pair
pir;
vector
v;map
mp;string makestring(string
str)
return
temp;
}void
init()
else
if(islower(str[i]))
else
if(str[i]>='
0'&&str[i]<='9'
)
else
if(str[i]=='
')
else
i++;
}if(i>=str.length())
break
;
else
if(str[i]=='#'
) }
}for(it=s.begin(); it!=s.end(); it++)
else
}s.clear();
}}bool
cmd(pir a, pir b)
intmain()
string ans = v[1
].first;
ans[
0] = ans[0]-'
a'+'a'
; cout
cout
<1].second<
if(index>0
) cout
<
and
"more ...
"<
return0;
}
完全通過的**:
#include usingview codenamespace
std;
typedef
long
long
ll;const ll mod = 2147493647
;const
int maxn = 1e5+10
;typedef pair
pir;
vector
v;map
mp;string makestring(string
str)
return
temp;
}bool judge(char
ch)void
init()
else
if(islower(str[i]))
else
if(str[i]>='
0'&&str[i]<='9'
)
else
}if(i>=str.length())
break
;
else
if(str[i]=='#'
) }
}for(it=s.begin(); it!=s.end(); it++)
else
}s.clear();
}}bool
cmd(pir a, pir b)
intmain()
string ans = v[1
].first;
ans[
0] = ans[0]-'
a'+'a'
; cout
cout
<1].second<
if(index>0
) cout
<
and
"more ...
"<
return0;
}
7 15 新浪微博熱門話題
大體思路是字串按行輸出 這裡注意getchar 每一行用set儲存話題 便於去重 然後把每一行出現的話題放入map集合中,因為map我不太會排序,轉化一下思路,遍歷map,將每乙個map對轉化成pair存入vector陣列,這樣就可以排序了,然後輸出就可以。不過肯定有寫細節需要注意了,比如在向集合裡...
新浪微博熱門話題 (30 分)
本題目要求實現乙個簡化的熱門話題推薦功能,從大量英文 因為中文分詞處理比較麻煩 微博中解析出話題,找出被最多條微博提到的話題。輸入說明 輸入首先給出乙個正整數n 10 5 隨後n行,每行給出一條英文微博,其長度不超過140個字元。任何包含在一對最近的 中的內容均被認為是乙個話題,輸入保證 成對出現。...
7 46 新浪微博熱門話題 30 分
這個30分不好拿呀,可以借鑑的知識點 map根據value排序,其實是用vector中的pair進行排序。首先題目讀錯了,忽略了還有數字,注意到這個問題以後,第三個測試點還是過不去。後來看了別人的部落格才發現,原來除了字母和數字的其他字元,要先替換成空格才行。每個話題在一行中只標記一次。別人的測試樣...