void GetNext()
{
int i = 0, j = -1;
next[0] = -1;
int LenP = strlen(pattern);
while (i < LenP) {
if (j == -1 || pattern[i] == pattern[j]) {
++i;
++j;
next[i] = j;
}
else {
j = next[j];
}
}
}
void KMP()
{
int LenP = strlen(pattern), LenT = strlen(text);
int i = 0, j = 0;
while (i < LenT) {
if (j == -1 || text[i] == pattern[j]) {
++i;
++j;
}
else {
j = next[j];
}
if (j == LenP) { //i位置匹配成功
j = next[j];
}
}
}
KMP
最新推荐文章于 2020-11-08 11:42:56 发布