其实容易想到 KMP 自动机,但是对其的理解过于浅薄。
先明确 KMP 的 fail 的意义,即为这个前缀的 border
而 KMP 自动机处理的则是 \(s[1\sim i]\) 加一个字符 \(j\) 的 border
而建立完自动机,转移为 \(f_{i+1,len} =max{f_{i,j +border-of-len+1}}\) 不难