标签:
KMP算法实现字符串的模式匹配的时间复杂度比朴素的模式匹配好很多,但是它时间效率的提高是有前提的,那就是:模式串的重复率很高,不然它的效率也不会凸显出来。在实际的应用中,KMP算法不算是使用率很高的一个算法,但是它的核心的那点东西却是使用率很高的,那就是next前缀数组的求解思路。在这次笔记中就单独摘出来,说一下前缀数组的求解。
这种方法的主要思路是:
为了求解nj的值,把的所有的前缀和后缀都找出来,然后从最大的开始匹配,直到找到合适的最长公共前缀后缀。如果没有,那么nj的值就是0。
前后缀的选取方式:
暴力算法就是在这里面不断的从最大的那个前缀和后缀逐一的匹配。
算法描述:
(1) 根据定义,初始化n[0] = –1
(2) 从模式串的下标为1的位置,依次遍历整个模式串。对于每一个字符,寻找它前面的字符串的最大公共前缀后缀,并把字符个数计为next[j],如果没有公共前后缀,计next[j]= 0
https://www.zybuluo.com/wzhang1117/note/27431
标签:
原文地址:http://www.cnblogs.com/stemon/p/4354221.html