0
比方說,我有一個列表:如何獲取列表中最頻繁的元素?
std::list<std::string> list ("the", "the", "friend", "hello", "the");
在這種情況下,在列表中最常見的元素是"the"
。有沒有辦法在C++中獲取這個元素?
謝謝!
比方說,我有一個列表:如何獲取列表中最頻繁的元素?
std::list<std::string> list ("the", "the", "friend", "hello", "the");
在這種情況下,在列表中最常見的元素是"the"
。有沒有辦法在C++中獲取這個元素?
謝謝!
解決您的問題的一般算法是建立一個字頻率的字典。下面是一個僞代碼算法,這不正是:
let L be the input sequence of strings (can be a list, doesn't matter)
let F be an empty dictionary that maps string to a number
for each string S in L
if not F contains S then
F[S] = 0
F[S] += 1
一旦詞典構造,所有你需要做的是找到具有最高值的映射,並返回鍵。
C++標準庫提供了關聯容器(又名字典,又名地圖),以及搜索容器內最大元素的算法。
是的,有。你有沒有嘗試過自己呢? – user2079303
不知道庫函數做什麼,但寫起來很容易。 – user4581301
'std :: map'可能有助於 –