algorithm - 给定一个文件,尽可能高效地找到十个最常出现的单词

标签 algorithm string

这显然是一道面试题(在面试题集中找到的),但即使不是,也很酷。

我们被告知要在所有复杂性度量上高效地执行此操作。我想创建一个 HashMap 将单词映射到它们的频率。这在时间和空间复杂度上是 O(n),但由于可能有很多单词,我们不能假设我们可以将所有内容都存储在内存中。

我必须补充一点,问题中没有任何内容说单词不能存储在内存中,但如果是这样呢?如果不是这种情况,那么这个问题似乎就不那么具有挑战性了。

最佳答案

为我自己的时间优化:

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

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

关于algorithm - 给定一个文件,尽可能高效地找到十个最常出现的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4495241/

相关文章:

c# - 在堆栈中查找最长的字符序列

python - 我应该使用 str.something(...) 还是 '…' .something()?

Android 自定义 XML 解析器无法解析 android 命名空间

c++ - 本地覆盖字符串提取运算符

c++ - 正在写入 &str[0] 缓冲区(std :string) well-defined behaviour in C++11?

algorithm - 找到包含在固定大小的圆圈中的最多点

javascript - 根据最小值重新分配百分比范围,同时保持相对比例

algorithm - O(NlogN) 在数组中找到 3 个具有任意 T 之和的数字

java - 使用中值规则的 QuickSort 错误

java - getBytes 和 serialize with String 有什么区别?