KMP
KMP算法的切入点很简单,是一个叫做最长相等真前后缀的东西。有点拗口,但是理解起来很简单,以字符串ababa为例:
- 前缀:字符串
ababa的前缀有a、ab、aba、abab和ababa。真前缀就是不等于自身的那些前缀。 - 后缀:字符串
ababa的后缀有a、ba、aba、baba和ababa。真后缀就是不等于自身的那些后缀。 - 相等真前后缀:真前缀中和真后缀中相等的那些:
a和aba。 - 最长相等真前后缀:相等真前后缀中最长的那一个:
aba。
最长相等真前后缀可以用于优化字符串比较。