母串: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取最大值的I为a
则有
S[a..p]=T[1..p-a+1]
è S[k+1..p]=T[k-a+2,p-a+1]
令L=next[k-a+2]
那么从T的k-a+2位起有L位与T[1..L]相同
如图所示:
若K+L<P,那么不需比较即可知extend[k+1]=L
若K+L≥P,则P-K=Len 即为已知的匹配长度,且T[1..Len]一定与S[k+1..P]匹配
那么从S[p+1]和T[Len+1]开始匹配,得到extend[k+1]。(同时更新a值)