T 聊天止於呵呵

2021-08-05 21:21:13 字數 1819 閱讀 3274

(現代版)俗話說:流言止於智者,聊天止於呵呵。輸入一段聊天記錄,你的任務是數一數有

多少段對話「止於呵呵」,即對話的最後一句話包含單詞 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 或者它的變形。具體來說,我們首先提取出對話的最後一句話,把所有非字母的字元替換成空格,把所有字元 替換成小寫,然後匯出乙個單詞列表 由空格隔開 只要...