【发布时间】:2023-08-07 22:42:02
【问题描述】:
创建一个单词列表的trie 的复杂性是多少?在该 trie 中搜索其他单词集的复杂性是多少? 当我有哈希表时,我应该使用 trie 进行字符串搜索吗?
【问题讨论】:
标签: algorithm data-structures time-complexity hashtable trie
创建一个单词列表的trie 的复杂性是多少?在该 trie 中搜索其他单词集的复杂性是多少? 当我有哈希表时,我应该使用 trie 进行字符串搜索吗?
【问题讨论】:
标签: algorithm data-structures time-complexity hashtable trie
创建trie的复杂度为O(W*L),其中W是单词的数量,L是单词的平均长度:您需要对每个单词平均执行L查找集合中的W 单词。
稍后查找单词也是如此:您为每个 W 单词执行 L 步骤。
哈希插入和查找具有相同的复杂性:对于每个单词,您需要检查相等性,这需要O(L),对于O(W*L) 的整体复杂性。
如果您需要查找整个单词,哈希表更容易。但是,您不能使用哈希表通过前缀查找单词;如果您对基于前缀的查找不感兴趣,请使用哈希表;否则,使用 trie。
【讨论】:
L 视为常量而不是变量时。这个问题的上下文不允许你这样做,因为 trie 对字符串的长度很敏感(它会影响 trie 的高度)。