KMP算法(图中串在存储时都没有使用数组的第一个位置)

KMP算法(图中串在存储时都没有使用数组的第一个位置)_第1张图片

 如图,KMP算法就是通过匹配失败之前已经匹配成功的字符得到主串的字符是什么,即通过匹配成功的模式串中的字符可以得到主串中相应位置的字符,由图可知,主串中匹配失败前的字符是和模式串中相应位置的字符一样的,以图中模式串为例,要知道,在模式串的任意一个字符处都可能发生匹配失败,总共有六种匹配失败的情况,如下图:

KMP算法(图中串在存储时都没有使用数组的第一个位置)_第2张图片

 这六种情况可用数组来存放,即next数组,如下图:

KMP算法(图中串在存储时都没有使用数组的第一个位置)_第3张图片

 因此KMP算法是通过事先得到next数组,再通过next数组进行模式匹配!(具体代码实现还没弄,只是浅浅的说一下自己的理解)(如有不对,欢迎大神指正)

你可能感兴趣的:(数据结构)