一个抽象的想法,不知道时间复杂度的正确性如何。
首先先找到 26 个字母中最先消失的那个字母的最后出现位置。
然后把这个字母在给出的串删去。
跑kmp,如果满足 fi=i/2 的话,说面前半部分加上原来的字母,就有可能是串 s。
考虑暴力判断合法性。
一个优化,对于我们找到的位置 i,我们可以考虑算出来 t[1,i] 的“理论最长拓展长度”
就是比如说"aabcaa",其中 a 出现 4 次,b 出现 1次,c 两次,
那么他理论最长扩展长度就是 (4+2)+4,就你每次删掉出现次数最少的字母。
通过这个可以判断掉一些无用的情况,求这个东西显然可以双指针。
但是这样的时间复杂度是多少我完全不会/ll。
求证明或hack。谢谢。