Z函数学习笔记
对于一个 \(i\),我们要知道 \((i,len)\) 和 \((1,len)\) 的 \(lcp\) 我们可以使用Z函数,这个是被 \(SA\) 单 \(log\) 完全取代的。但是算法比较有意思,学一下。我们维护当前能匹配到的最大的右端点。
****
然后我们要匹配后面的。首先,我们的最大值一定>=i-1
所以x可以看作是在****中间。
1 1+(j-i) len | i j i+len-1
所以我们看一下 \(nxt[i+len-(j+len-1-x)]\),然后和 \(j+len-x\) 取个 \(min\),然后就做完了。