Gym 101466 E - Text Editor KMP + 二分答案
题意:给你一个主串和模式串,找出模式串最大的前缀,使得其在主串中的出现次数大于等于n。
思路:
首先会想到KMP。但是如果直接拿模式串一位一位匹配是O(n2)的时间复杂度,肯定过不了。
我们发现模式串长度越长,越不容易满足要求。所以这里有个单调性,可以来二分。我们二分答案可能的长度,然后用这么长的前缀丢进KMP里面,看看能否满足,如果发现可以,就把长度调大一点,反之调小一点。时间复杂度O(nlogn)。
最后注意KMP用来计数时,每次匹配完不能直接j=0, i -= p.size(),因为这样会使得指针回溯
原创
2020-10-13 13:34:55 ·
247 阅读 ·
0 评论