面试题 16.02. 单词频率 - 力扣(LeetCode)
你可以使用哈希表(字典)来存储每个单词的出现次数,这样查询单词频率的时间复杂度是 O(1)。以下是 Python 的实现:
from collections import Counter
class WordsFrequency:
def __init__(self, book: list[str]):
"""
初始化时计算书中所有单词的频率,并存储在字典中。
:param book: 一个字符串列表,每个元素代表书中的一个单词。
"""
self.word_count = Counter(book)
def get(self, word: str) -> int:
"""
返回指定单词的出现次数。
:param word: 需要查询的单词
:return: 该单词的出现次数
"""
return self.word_count.get(word, 0)
代码解析:
-
使用
Counter
统计单词频率:Counter
是 Pythoncollections
模块中的一个子类,它可以轻松统计可迭代对象中每个元素的个数。self.word_count = Counter(book)
创建了一个字典,键是单词,值是该单词的出现次数。
-
get
方法查询单词频率:- 通过
self.word_count.get(word, 0)
直接返回单词的出现次数,如果单词不在书中,返回0
。
- 通过
示例用法:
book = ["hello", "world", "hello", "python"]
wf = WordsFrequency(book)
print(wf.get("hello")) # 输出 2
print(wf.get("world")) # 输出 1
print(wf.get("java")) # 输出 0
此实现的查询时间复杂度为 O(1),构造函数的时间复杂度为 O(N)(N 为书中单词的个数)。