KMP 算法之得到next的代码

本文通过实例解析KMP算法中next数组的生成过程,通过代码展示如何将生成next数组的步骤优化,简化模式匹配的过程。
摘要由CSDN通过智能技术生成

最近温习了一下KMP算法。现在谈谈我对KMP算法的理解。
KMP算法目的:尽量快的解决单字符串匹配的问题。

一、问题:
主字符串: ababcababababcab
模式串: abababab

判断在主串中是否存在模式串,如果存在,在哪个位置。

二、解决
解决办法很多,单谈KMP算法的next获取方法。
next数组的目标:在匹配失败的时候,将模式串的下标位置尽量的少的前移,使匹配速度最快。
进一步说就是:在模式串的每一个位置进行切割(不包括当前位置),前面一段字符串中,找出一个后缀(即不包括第一个字符),使得完全匹配自身的前缀。
可能有点绕口,看图!

1. 为了更直观起见,我将模式串进行放大并影分身!你看到的是两个模式串,但其实是一个(后面不再提醒)。


2. 那,这样我们得到一段字符串aba,它只存在一个后缀aÿ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值