大概就是在做 exkmp 的时候需要判
while (i + Pz[i] - 1 < gb + L && s[Pz[i]] == t[i + Pz[i] - 1]) ++ Pz[i] ;
的前半句。如果不判就会挂到 93.
但本质上这句话在自匹配里并不需要,于是可以发现锅在 s 结束了但是 t 没结束。于是考虑在 exkmp 开头加上一句。
exkmp
s[strlen(s + 1) + 1] = '#' ;
就好了。