我正在解决一些涉及Rabin-Karp字符串搜索算法的问题。该算法要求滚动哈希比原始搜索更快。 This article 描述了如何实现滚动哈希。我没有问题地实现了“Rabin-Karp滚动哈希”并且发现了很少的实现implementations,但文章也提到了计算复杂性,并且优选使用循环多项式散列n-gram。它链接到BuzHash这种技术的实现,但我想知道它是如何用它来构建n-gram哈希的。我想要this或
之类的东西CPHash cp = new CPHash("efghijk");
cp.shiftRight('l') // now we got hash of "fghijki"
cp.shiftLeft('d') // "defghi"
for java。
答案 0 :(得分:4)
我最近发布了一个Apache许可的Java库,它实现了几个滚动哈希函数,包括Cyclic和Rabin-Karp: