KMP
next 数组
那么如何求 next 数组?
for (int i = 2, j = 0; i <= m; i ++) {
while (j && p[i] != p[j + 1]) j = ne[j];
if (p[i] == p[j + 1]) j ++;
ne[i] = j;
}模式匹配
最后更新于
for (int i = 2, j = 0; i <= m; i ++) {
while (j && p[i] != p[j + 1]) j = ne[j];
if (p[i] == p[j + 1]) j ++;
ne[i] = j;
}最后更新于
for (int i = 1, j = 0; i <= m; i ++) {
while (j && s[i] != p[j + 1]) j = ne[j];
if (s[i] == p[j + 1]) j ++;
if (j == n) {
cout << i - n << ' ';
j = ne[j];
}
}