文本串 aabaabaaf
模式串 aabaaf
前缀表 next数组
前缀 (包含首字母,不包含尾字母)
a aa aab aaba aabaa
后缀 (包含尾字母,不包含首字母)
f af aaf baaf abaaf
关键 最长相等前后缀
a 0
aa 1
aab 0
aaba 1
aabaa 2
aabaaf 0
a a b a a f
0 1 0 1 2 0
naxt 数组
i 后缀末尾
j 前缀末尾
分四部
1 初始化
2 前后缀不相同
3 前后缀相同
4 next
void get_next (string T,int *next){
int j = 0;
next[0] = 0;
int i = 1;
for(i = 1;i < T.size();i ++){
while(j > 0 && T[i] != T[j]){
j = next[j - 1];
}
if(T[i] == T[j]){
j ++;
}
next[i] = j;
}
}
第一道题