(現代版)俗話說:流言止於智者,聊天止於呵呵。輸入一段聊天記錄,你的任務是數一數有
多少段對話「止於呵呵」,即對話的最後一句話包含單詞 hehe 或者它的變形。
具體來說,我們首先提取出對話的最後一句話,把所有非字母的字元替換成空格,把所有字元 替換成小寫,然後匯出乙個單詞列表(由空格隔開),只要列表中的任何乙個單詞是 hehe,這 段對話就算作「止於呵呵」。比如,」hi! are you ok?」 會變成四個單詞:hi, are, you, ok。注 意,單詞列表可以是空的(比如,這句話是:」?!?!!」)
有些人喜歡使用 hehe 的變形,這些變形也應被視為「呵呵」。為了簡單起見,本題只考慮由 n(n>1)個 he 連線而成的單詞,比如 hehehe 或者 hehehehe。注意,以 hehe 為連續子串的其他單 詞不應視為「呵呵」,比如 hehee,或者 ehehe。
每兩個不同人之間的所有對話算作「一段對話」。
input
輸入僅包含一組資料,每行是一句對話,格式為:
人名1->人名2: 一句話.
每行最多包含 1000 個字元,最多 100 行。
output
輸出「止於呵呵」的對話段落所佔的百分比,四捨五入到最近的整數。輸入資料保證答案不會
同時和兩個整數最近。
sample input
a->b: hello!
a->c: hi!
b->a: hehe
b->d: hei!
d->b: how are you?
a->c: hi???
a->c: are you there?
b->d: hehehei!
d->b: what does hehehei mean?
f->e: i want to hehehehehe yah.
sample output
50%
hint
樣例解釋
a 和 b 之間的最後一句話是」hehe」.
a 和 c 之間的最後一句話是」are you there?」.
b 和 d 之間的最後一句話是」what does hehehei mean?」.
e 和 f 之間的最後一句話是」i want to hehehehehe yah」. 最後第一段和最後一段話是「止於呵呵」的(注意最後一段對話是以呵呵的變種結束),因此 比例是 50%。
分析:
字串處理問題,可以考慮使用stl,會使編碼容易得很多;
**:
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
mapchar,char> ,string >mp;
set s;
void init()
}bool stop_hehe(string &str)
return
false;
}int main()
double total=0,stop=0;
int ans;
mapchar,char>,string>::iterator it;
for(it =mp.begin();it!=mp.end();it++)
double tmp = stop/total;
ans = (int)((tmp+0.005)*100.0);
printf("%d%%\n",ans);
}
2015 H 聊天止於呵呵
問題描述 現代版 俗話說 流言止於智者,聊天止於呵呵。輸入一段聊天記錄,你的任務是數一數有 多少段對話 止於呵呵 即對話的最後一句話包含單詞 hehe 或者它的變形。具體來說,我們首先提取出對話的最後一句話,把所有非字母的字元替換成空格,把所有字元 替換成小寫,然後匯出乙個單詞列表 由空格隔開 只要...