算法 – 给定一个文件,尽可能高效地找到十个最常发生的单词

这显然是一个采访问题(在采访问题的集合中发现),但即使不是很酷。

我们被告知要在所有复杂措施上有效地做到这一点。我想到创建一个将字词映射到频率的HashMap。那么O(n)在时间和空间上是复杂的,但是由于可能会有很多的话,我们不能假设我们可以将所有内容存储在内存中。

我必须补充说,问题中没有提到这些单词不能存储在内存中,但如果是这样的话呢?如果不是这样,那么这个问题似乎并不具有挑战性。

优化我自己的时间:

sort file | uniq -c | sort -nr | head -10

可能之后是awk'{print $ 2}’以消除计数。

翻译自:https://stackoverflow.com/questions/4495241/given-a-file-find-the-ten-most-frequently-occuring-words-as-efficiently-as-poss

转载注明原文:算法 – 给定一个文件,尽可能高效地找到十个最常发生的单词