码迷,mamicode.com
首页 > 编程语言 > 详细

KMP算法番外篇

时间:2015-03-20 18:01:54      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:

KMP算法实现字符串的模式匹配的时间复杂度比朴素的模式匹配好很多,但是它时间效率的提高是有前提的,那就是:模式串的重复率很高,不然它的效率也不会凸显出来。在实际的应用中,KMP算法不算是使用率很高的一个算法,但是它的核心的那点东西却是使用率很高的,那就是next前缀数组的求解思路。在这次笔记中就单独摘出来,说一下前缀数组的求解。


1. next前缀数组的定义

技术分享


2. next数组的暴力求解

这种方法的主要思路是:

为了求解nj的值,把技术分享的所有的前缀和后缀都找出来,然后从最大的开始匹配,直到找到合适的最长公共前缀后缀。如果没有,那么nj的值就是0。

前后缀的选取方式:

技术分享

暴力算法就是在这里面不断的从最大的那个前缀和后缀逐一的匹配。

算法描述:

(1) 根据定义,初始化n[0] = –1

(2) 从模式串的下标为1的位置,依次遍历整个模式串。对于每一个字符,寻找它前面的字符串的最大公共前缀后缀,并把字符个数计为next[j],如果没有公共前后缀,计next[j]= 0

https://www.zybuluo.com/wzhang1117/note/27431

KMP算法番外篇

标签:

原文地址:http://www.cnblogs.com/stemon/p/4354221.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!