【发布时间】:2010-06-07 06:50:10
【问题描述】:
我有几 GB 的字符串,对于每个前缀,我想找到 10 个最常见的后缀。有没有一种有效的算法?
一个明显的解决方案是:
- 存储
<string, count>对的排序列表。 - 通过二进制搜索范围识别我们正在搜索的前缀。
- 在此范围内找到 10 个最高的
counts。 - 可能为所有短前缀预先计算它,因此它不需要查看大部分数据。
我不确定这是否真的有效。有没有更好的方法被我忽略了?
答案必须是实时的,但可以根据需要进行尽可能多的预处理。
【问题讨论】:
-
您使用的任何特定语言?我猜是 C++ 或 Java...另外,您的字符串是在数据库中还是只是在文件中?
-
这是所有文件,无论哪种语言速度最快,所以最有可能是 C。
标签: algorithm