F kmp的题解:
考虑 kmp 的 fail 数组, 表示原串长度为 前缀的最长前后缀。长度为 的前缀是原串的前后缀,当且仅当 。
对于最后一个条件,只需要这个前缀在原串中出现次数大于 即可(前缀一次,后缀一次,中间至少一次)。求前缀的出现次数也是 kmp 的经典应用。
因此,只需要预处理前缀的出现次数,枚举 并判断即可。
参考代码