![](https://csdnimg.cn/release/download_crawler_static/86306841/bg8.jpg)
Rabin-Karp
将每个匹配串映射为个hash值。例如,将串看做个多进制数,较它
的值与母串中相同长度串的hash值,如果相同,再细致地按字符确认字符串是
否确实相同。顺序计算母串hash值的过程中,使增量计算的法:扣除最位
的hash值,增加最低位的hash值。因此能在平均情况下做到O(m+n)。
raw: “1234”
match: “23”
int RabinKarp(string s[1..n], string pattern[1..m])
hpattern = hash(pattern[1..m]); hs = hash(s[1..m]);
for i from 1 to n-m+1
if hs = hpattern
if s[i..i+m-1] = pattern[1..m]
return i
hs = hash(s[i+1..i+m])
return not found
6