这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录 前一修订版 | |||
|
2020-2021:teams:farmer_john:2sozx:字符串:kmp [2020/05/22 10:21] 2sozx |
2020-2021:teams:farmer_john:2sozx:字符串:kmp [2020/05/22 10:26] (当前版本) 2sozx |
||
|---|---|---|---|
| 行 2: | 行 2: | ||
| ====简介==== | ====简介==== | ||
| 本质上是 $nxt$ 数组,$nxt[j]=k$ 表示 $j$ 之前的字符串中有最大长度为 $k$ 的相同前缀后缀。 | 本质上是 $nxt$ 数组,$nxt[j]=k$ 表示 $j$ 之前的字符串中有最大长度为 $k$ 的相同前缀后缀。 | ||
| + | ====代码==== | ||
| + | <code cpp> | ||
| + | nxt[1]=0; | ||
| + | for(i=2;i<=n;i++){ | ||
| + | while(j&&ch[j+1]!=ch[i]) j=nxt[j]; | ||
| + | if(ch[j+1]==ch[i]) j++; | ||
| + | nxt[i]=j; | ||
| + | } | ||
| + | </code> | ||