您的位置:首页 > 理论基础 > 数据结构算法

KMP算法

2018-02-09 19:24 204 查看
1. 朴素算法(比较是一位一位比的,计算机二进制比的效率很慢)

2.KMP算法避免重复比较,及上图去掉2/3步骤实现方法,先算next值:

next算法如下:k = 0 (第一位)若有 P(1)【P(1)代表第一位的A】 ~ P(K-1) = P(J-K+1) ~ P(J-1),则next值为K(就是比方说看第五位的B,要看他前面的四位,发现有一个a和第一位的a重复,那么就得了2,比方说看x 前面如果是 abcab,则看到有ab和最前面的ab重复,那么就得3了) 代码感受下:





3. KMP算法优化。比如:

这样的话,比较i[x] != j[x]时,前面a是相同的,KMP算法会回溯到上一个a进行比较,而改良版的KMP算法会回溯到第一个a进行比较。保证了回溯到最前面的循环体。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构