[問題] 統計string中單字出現的次數
小弟不才..又來求教一練習題
題目要求由使用者輸入字串
並輸出各單字中出現最頻繁者和次數
例如 how, now now brown cow
則得到 now : 2
我目前只會硬幹將單字丟入vector中, 並將每個單字與所有單字做比對
string s;
vector<string> v;
while(cin>>s)
v.push_back(s); //vector存各個單字
int* cptr = new int[v.size()](); //array存各個單字的次數
for(vector<string>::size_type ix=0; ix!=v.size(); ++ix)
for(vector<string>::size_type iy=0; iy!=v.size(); ++iy)
{
if(v[ix] == v[iy])
cptr[ix]++;
}
這樣子是能記錄各個單字的次數 how, now now brown cow
cptr[0] [1] [2] [3] [4]
1 2 2 1 1
再從次數找最大值, 之後用index代回vector得到單字..
如果單字一樣就擇其一輸出
只是這樣子比對複雜度是O(n^2), 輸入多一點就很沒效率
完全是硬湊出來的解法@@
能否提供我一些方向或提示..該怎麼思考這樣的問題比較好?
謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.162.80.111
→
09/06 01:01, , 1F
09/06 01:01, 1F
→
09/06 01:02, , 2F
09/06 01:02, 2F
→
09/06 01:05, , 3F
09/06 01:05, 3F
→
09/06 01:09, , 4F
09/06 01:09, 4F
→
09/06 01:10, , 5F
09/06 01:10, 5F
推
09/06 01:40, , 6F
09/06 01:40, 6F
→
09/06 01:47, , 7F
09/06 01:47, 7F
推
09/06 01:57, , 8F
09/06 01:57, 8F
→
09/06 01:57, , 9F
09/06 01:57, 9F
→
09/06 02:16, , 10F
09/06 02:16, 10F
→
09/06 02:16, , 11F
09/06 02:16, 11F
推
09/06 02:31, , 12F
09/06 02:31, 12F
→
09/06 02:32, , 13F
09/06 02:32, 13F
→
09/06 02:34, , 14F
09/06 02:34, 14F
→
09/06 02:35, , 15F
09/06 02:35, 15F
→
09/06 02:37, , 16F
09/06 02:37, 16F
推
09/06 02:38, , 17F
09/06 02:38, 17F
→
09/06 02:38, , 18F
09/06 02:38, 18F
→
09/06 02:39, , 19F
09/06 02:39, 19F
→
09/06 02:39, , 20F
09/06 02:39, 20F
→
09/06 02:40, , 21F
09/06 02:40, 21F
推
09/06 02:42, , 22F
09/06 02:42, 22F
推
09/06 02:45, , 23F
09/06 02:45, 23F
→
09/06 02:46, , 24F
09/06 02:46, 24F
→
09/06 02:46, , 25F
09/06 02:46, 25F
→
09/06 02:46, , 26F
09/06 02:46, 26F
→
09/06 02:48, , 27F
09/06 02:48, 27F
→
09/06 02:49, , 28F
09/06 02:49, 28F
推
09/06 02:50, , 29F
09/06 02:50, 29F
→
09/06 02:50, , 30F
09/06 02:50, 30F
推
09/06 02:54, , 31F
09/06 02:54, 31F
→
09/06 02:54, , 32F
09/06 02:54, 32F
→
09/06 02:58, , 33F
09/06 02:58, 33F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 4 篇):