KMP算法
KMP算法:
复杂度:线性
PMT数组:PMT中的值是字符串的前缀集合与后缀集合的交集中最长元素的长度。
next数组:是将PMT数组向后偏移一位得到的数组。
基于next数组进行匹配。
next数组的求法:模式串自己和自己匹配,用递推的方式,基于next[1....j] 确定next[j+1]
如果匹配:next[i]=j;
不匹配:j=next[j];
KMP算法:
复杂度:线性
PMT数组:PMT中的值是字符串的前缀集合与后缀集合的交集中最长元素的长度。
next数组:是将PMT数组向后偏移一位得到的数组。
基于next数组进行匹配。
next数组的求法:模式串自己和自己匹配,用递推的方式,基于next[1....j] 确定next[j+1]
如果匹配:next[i]=j;
不匹配:j=next[j];