KMP&&E-KMP总结(kuangbin)

kmp:

  1. next数组:子串的前缀和后缀最大长度,也就是子串后缀与子串的最大匹配长度。
  2. kuangbin模板上的kmp_pre求next数组优化版,部分next[i]=-1,可能会在有些题目上出错,慎用.
  3. 周期串:(i%(i-next[i])==0)最小周期(i-next[i]),循环节(i/(i-next[i]));
  4. 前缀在原串中出现的次数dp[i]=dp[NEXT[i]]+1;第i个字符结尾的前缀数等于以第next[i]个字符为结尾的前缀数加上它自己本身。

e-kmp:

  1. extend[i],S[i-len]与T的前缀的最大匹配长度,next[i],T[i-len]与T的前缀的最大匹配长度
  2. i+extend[i]==len表示S在i之后的后缀与T的前缀相匹配
  3. 上面那个dp方程可以直接用自身匹配的next求和
  4. 判断前缀或者后缀是回文串:后缀:a->reverse->b
    求a当作母串的extend数组i+extend[i]==len就是回文串
    前缀:reverse之后b当作母串求extend2同样判断就行
    9.翻转||往后接一个相同的串

猜你喜欢

转载自blog.csdn.net/qq_43653111/article/details/102389578
kmp