刷題-力扣-面試題 16.02. 單詞頻率
阿新 • • 發佈:2022-03-10
題目連結
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/words-frequency-lcci
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
題目描述
設計一個方法,找出任意指定單詞在一本書中的出現頻率。
你的實現應該支援如下操作:
WordsFrequency(book)建構函式,引數為字串陣列構成的一本書
get(word)查詢指定單詞在書中出現的頻率
示例:
WordsFrequency wordsFrequency = new WordsFrequency({"i", "have", "an", "apple", "he", "have", "a", "pen"}); wordsFrequency.get("you"); //返回0,"you"沒有出現過 wordsFrequency.get("have"); //返回2,"have"出現2次 wordsFrequency.get("an"); //返回1 wordsFrequency.get("apple"); //返回1 wordsFrequency.get("pen"); //返回1
提示:
- book[i]中只包含小寫字母
- 1 <= book.length <= 100000
- 1 <= book[i].length <= 10
- get函式的呼叫次數不會超過100000
題目分析
- 根據題目描述,計算詞頻
- 將輸入的單詞儲存到hash表中,鍵為單詞,值為出現的次數
程式碼
class WordsFrequency { private: std::unordered_map<std::string, int> map; public: WordsFrequency(vector<string>& book) { for (auto word : book) { this->map[word] += 1; } return; } int get(string word) { return this->map[word]; } }; /** * Your WordsFrequency object will be instantiated and called as such: * WordsFrequency* obj = new WordsFrequency(book); * int param_1 = obj->get(word); */