创建一个单词列表的trie的复杂度是什么?在该trie中搜索其他单词集合的复杂度是什么?
当我拥有哈希表时,我是否应该使用trie进行字符串搜索?
创建一个trie的复杂度为 O(W*L)
,其中W
是单词数量,L
是单词的平均长度:每个单词需要进行L
次查找,对于集合中的W
个单词都是如此。
在之后查找单词时,情况也是如此:每个单词都需要进行L
次查找。
哈希表的插入和查找具有相同的复杂度:对于每个单词,您需要检查相等性,这需要O(L)
的时间,因此总体复杂度为O(W*L)
。
如果您需要查找整个单词,哈希表更容易。然而,使用哈希表无法通过前缀查找单词;如果基于前缀的查找对您没有兴趣,请使用哈希表;否则,请使用Trie。
L
视为常量而不是变量时。由于 trie 对字符串的长度敏感(它影响 trie 的高度),所以此问题的上下文不允许您这样做。 - Sergey Kalinichenko