PHP 中的 Rabin-Karp 算法
我想知道是否有人可以分享 Rabin-Karp 算法的源代码?
谢谢
I was wondering if anyone can share a source for Rabin-Karp algorithm?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我想知道是否有人可以分享 Rabin-Karp 算法的源代码?
谢谢
I was wondering if anyone can share a source for Rabin-Karp algorithm?
Thanks
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
http://en.wikipedia.org/wiki/Rabin-Karp_string_search_algorithm
http://www.eecs.harvard.edu/~ellard /Q-97/HTML/root/node43.html
这里有几个来源。
http://en.wikipedia.org/wiki/Rabin-Karp_string_search_algorithm
http://www.eecs.harvard.edu/~ellard/Q-97/HTML/root/node43.html
Here's a couple sources.
这是Karp-Rabin 算法的 C 实现的端口< /a>:
This is a port of this C implementation of the Karp-Rabin algorithm:
为了便于说明,这是上面 Gumbo 的答案的一个稍微修改的版本,具有更简单的散列和更清晰的变量命名。
在下面的说明性散列中,我只是将每个字符的 ord() 值添加到一个代表散列的数字中,然后在推进搜索时减去该值/添加下一个字符的 ord() 。 这非常容易发生冲突(因此不利于生产),但如果您只是从概念上学习 Rabin-Karp,则更容易理解。
Here's a slightly altered version Gumbo's answer above, with simpler hashing and clearer variable naming, for the sake of illustration.
In the illustrative hashing below I'm just adding the ord() value of each character to a number, which represents the hash, then subtracting that value/adding the ord() of the next char when advancing our search. This is very collision-prone (and therefore not good for production), but it's easier to understand if you're just learning Rabin-Karp conceptually.
试试这个。在将其发送到
match_rabinKarp()
之前,您必须从$needle
和$haystack
中删除标点符号,但这基本上遵循给定的算法在维基百科页面上。Try this out. You will have to strip the punctuation from the
$needle
and$haystack
before sending it tomatch_rabinKarp()
, but this basically follows the algorithm given on the wikipedia page.