【代码随想录】Day9 28.实现strStr 459.重复的子字符串
KMP算法
KMP字符串解决的就是字符串匹配的问题
文本串 aabaabaaf
模式串 aabaaf
文本串中是否出现过模式串?
传统方法:暴力匹配,时间复杂度O(m*n)
前缀:包含首字母,不包含尾字母的所有子串
后缀:只包含尾字母,不包含首字母的所有子串
最长相等前后缀010120
找到不匹配的地方前面的一个子串,最长相等前后缀是多少,此例为2,有一个后缀aa,前面也有一个与其相等的前缀aa,从与其相等的前缀的后面继续匹配,所以从b处开始重新匹配。
代码实现:
初始化——前后缀不相同——前后缀相同——next
j,i两个指针分别指向前缀末尾位置和后缀末尾位置,j还指i之前包括i子串最长相等前后缀的长度