算法实现
KMP
kmp真是学到现在为止最头疼的一个算法,嗯我是渣渣
分两部分 一、子串的next数组;二、循环遍历。
next数组的意义是:第n项之前的若干项与第1到第next[n]-1项完全一样(前驱相同)。
因此next数组的寻找方式使用递归的想法:
对于当前位置i,有开头的最大子串长度为n;
对i+1,若j+1==i+1,那么最大子串长度为n+1;若j+1!=i+1,因为第j+1项和第next[j+1]有着同样的前驱,那么将j指向next[j+1]重新比较即可。
循环遍历的方法:
从第一项开始,如果不等加一;相等i,j均加一;
对于第i项,如果相等i,j加一;
若不等,即i+1!=j+1,因为j+1和next[j+1]有着相同前驱,所以前驱项不用比较,j指向next[j+1]即可。
[数据结构] 匹配算法
最新推荐文章于 2024-09-06 14:52:15 发布