KMP算法
代码不太会写,但是学习数据结构的时候有学习过。这遍自己打一打看看理解够不够。
首先举个例子:
/*
字符串: aaabaaacaaad
需要比较的模式串: aaad
i为指向字符串的下标, j为指向模式串的下标,都从1开始
**** 第一轮比较
i = 1; j = 1;
相等
i++; j++
**** 第二轮比较
i = 2; j = 2;
...同理直到 i = 4; j = 4失配
此时如果使用朴素匹配算法,就要将i = 2; j = 1; 从字符串第二位,模式串的头一位开始比较,但是已经比到了第四位,说明字符串的前三位和模式串的前三位一致,可以在失配后跳过比较,让主串的下标i保持不变,j指向后面。
*/