kmp是假期学习的第一个比较难的算法内容,耗费了整一天时间,还有的地方不太懂,勉强可以敲出来了,先记录一下,有机会再理解
getnNex 结构是这样;
1.初始化 i在后j在前,j初始0 i初始1,每次大循环i+1,
2如果【i】【j】 不相等的话,j变成next【j-1】,后退好几次用while循环,到头j= 0停止
3如果【i】【j】 相等的话,最长公共前后缀长度加一,也就是j++;
4 每次都要对next【i】进行更新,
利用getnext方法求出了前缀表,i指在文本串,j指在模板串。
挨个比较【i】【j】 结构类似与上边的23,如果j=模板长 输出起始位置