字符串最大公共前后缀
用KMP时需要用到,一个很巧妙的思想
加一个视频讲解(传送门),是KMP的,不过有最大公共前后缀的讲解。
const int maxn = 1e5;
int g[maxn] = { 0 };//g[i]:前i个字符的最大公共前后缀的长度
void gt(string s) {//传入字符串s,更新g数组
int len = s.size();
int i = 0, j = 1;
while (j < len) {
if (s[i] == s[j]) {
g[j] = i + 1;
i++;
j++;
}
else {
if (i == 0) {
g[j] = 0;
j++;
continue;
}
i = g[i - 1];
}
}
}