2

我正在解决一些涉及 Rabin–Karp 字符串搜索算法的问题。该算法要求滚动哈希比简单搜索更快。本文介绍如何实现滚动哈希。我没有问题地实现了“Rabin-Karp rolling hash”,发现很少有实现实现,但文章还提到了计算复杂性,并且首选通过循环多项式对 n-gram 进行散列。它链接到这种技术的BuzHash实现,但我想知道如何使用它在其之上构建 n-gram 哈希。我想要这样的东西

CPHash cp = new CPHash("efghijk");
cp.shiftRight('l') // now we got hash of "fghijki"
cp.shiftLeft('d') // "defghi"

对于java。

对于会遇到与字符串搜索相关的问题的人(比如我),我发现一些文章很有1、2、3

4

1 回答 1

4

我最近发布了一个 Apache 许可的 Java 库,它实现了几个滚动哈希函数,包括 Cyclic 和 Rabin-Karp:

http://code.google.com/p/rollinghashjava/

https://github.com/lemire/rollinghashjava

于 2011-03-11T15:54:50.697 回答