朴素模式匹配算法的存在大量的重复匹配操作,时间复杂度为O(m*n),其中m表示主串的长度,n表示模式串的长度,但是算法好理解。另外有一种高效的算法,被称为KMP,该算法的目标就是去掉多余的重复匹配过程,但是算法很难理解,主要是通过构造一个next[]数组来实现,可以实现线性的时间复杂度O(m+n),可以参考网络是一篇比较优秀的博文:
1 /* KMP模式匹配算法 2 */ 3 void get_next(const char T[], int next[]) 4 { 5 int j = 0, k = -1; 6 7 next[0] = -1; 8 while (T[j] != '