给定前缀,如何有效地找到最常用的单词

时间:2014-10-16 02:59:13

标签: algorithm data-structures

这是一个面试问题:http://www.geeksforgeeks.org/find-the-k-most-frequent-words-from-a-file/

但是这个问题需要更多的东西:GIVEN PREFIX

例如,给出" Bl"返回最频繁的单词,例如" bloom,blame,bloomberg"等

因此必须使用TRIE。但是,如何有效地构建堆?在运行时为每个前缀构造堆是不对的或实际的。什么是一个很好的解决方案。

[假设此TRIE或数据结构是静态的,预构建]

谢谢!

1 个答案:

答案 0 :(得分:0)

保留文件中出现的所有字词及其计数。所以现在如果它要求返回带有前缀" BI"的所有单词,那么你可以使用形成的trie有效地完成它。但是,由于您有兴趣使用前缀" BI"来提供最常出现的单词,您现在可以使用最小堆来有效地给出答案,就像在您链接到的帖子中所做的一样

另请注意,由于特里的空间使用量会变得非常大,因此您可以建议采访者使用Ternary search tree代替特里。