字符串基础_扩展KMP

母串:S 子串:T

extend[i]=LCP(S[i..n],T)

next[i]=LCP(T[i..n],T)

假设extend[1..k]已计算出,现计算extend[k+1]

P=max{I+extend[I]-1} (I=1..k)

并令使P取最大值的Ia

则有

S[a..p]=T[1..p-a+1]

è      S[k+1..p]=T[k-a+2,p-a+1]

 

L=next[k-a+2]

那么从Tk-a+2位起有L位与T[1..L]相同

如图所示:

K+L<P,那么不需比较即可知extend[k+1]=L

K+LP,则P-K=Len 即为已知的匹配长度,且T[1..Len]一定与S[k+1..P]匹配

那么从S[p+1]T[Len+1]开始匹配,得到extend[k+1](同时更新a)

转载于:https://www.cnblogs.com/exponent/archive/2011/09/25/2190350.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值