串的模式匹配算法
KMP算法:o(n+m)
S=‘ababcabcacbab’;
T=‘abcac’;
相信大家在index_kmp这个函数方面都是没有问题的,那么我们直接进入get_next当中。
第一部分:原理部分
第一种实例:S[i-1]==T[i-1] && S[i]!=T[j] && { T[1]==T[j-1] }
得到 k-1=1(这个1是根据大括号内等是的数目决定的),即得到: next[j]-1=1, 即 next[j]=2;
第二种实例:S[i-1]==T[i-1] && S[i]!=T[j] && { T[1]==T[j-2] && T[2]==T[j-1] }
得到 k-1=2,即得到: next[j]-1=2, 即 next[j]=3;
以此类推,得到:
第n种实例:S[i-1]==T[i-1] && S[i]!=T[j] && { T[1]==T[j-n] && T[2]==T[j-n+1] … && T[n]==T[j-1] }
得到 k-1=n,即得到: next[j]-1=n, 即 next[j]=n+1;
注意:我们这里为什么要去求 ne