• LeetCode 面试题 16.02. 单词频率


    一、题目

      设计一个方法,找出任意指定单词在一本书中的出现频率。

      你的实现应该支持如下操作:

    • 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

      点击此处跳转题目

    二、C# 题解

      用哈希表存储查找,直接上代码:

    public class WordsFrequency {
    
        private Dictionary<string, int> dic;
    
        public WordsFrequency(string[] book) {
            dic = new Dictionary<string, int>();
            foreach (string s in book) {
                if (dic.ContainsKey(s)) dic[s]++;
                else dic[s] = 1;
            }
        }
    
        public int Get(string word) {
            return dic.GetValueOrDefault(word, 0);
        }
    }
    
    /**
     * Your WordsFrequency object will be instantiated and called as such:
     * WordsFrequency obj = new WordsFrequency(book);
     * int param_1 = obj.Get(word);
     */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 时间:492 ms,击败 100.00% 使用 C# 的用户
    • 内存:93.49 MB,击败 80.00% 使用 C# 的用户
  • 相关阅读:
    CSS盒子模型
    git上传代码冲突
    linux常用命令记录
    【并发编程】锁机制
    首次开通社交账号亲自招聘人才 周星驰都在关注的Web3 你知道是什么吗?
    在vscode中配置ros环境
    【WALT】scale_exec_time() 代码详解
    Three.js 这样写就有阴影效果啦
    WSL2Linux 子系统(六)
    Mock.js的使用api讲解
  • 原文地址:https://blog.csdn.net/zheliku/article/details/134014216