最近在复习数据结构,看到KMP算法这里,花了好久才搞懂,下面总结一下我的一些理解。 先来看问题: 串的模式匹配:返回子串T在主串S中的位置,若不存在则返回-1 常规的匹配方法是,用i、j分别指示两个字符串,从主串S(假设长度为n)的第1个字符开始,和子串T(长度为m)的第1个字符进行比较,如果一样,i、j都加1,继续比较下一个;不一样,选取S第i-j+2个字符,再和子串的第1个字符重新开始比较,直到S的末尾或者子串T在S中被找到。 这样的时间复杂度是O(n*m)。 下面介绍:KMP算法 该算法是D.E.Knuth、J.H.Morris和V.R.Pratt同时发现的,因此被称...