首页 > 字符串的问题
头像 苟且的狮子
发表于 2020-08-28 23:13:09
kmp 题意: 分析: 我们看着一题,我们仔细想想。首先如果没有要求中间 子串 的话,就很简单了。我们直接输出前后缀相等的就好了。无论是 kmp 还是 暴力 都是线性时间。 但是麻烦就在于中间要有字串。 那我们想想,如何判断中间有没有子串呢? 假设,next[n] = k 意味着s0,s1,s 展开全文
头像 威风镰鼬
发表于 2021-08-29 10:45:18
思路 首先如果要求最大前缀的话,我们用Kmp就能线性求出来。题目要求中间也有一个和最大前缀一样的东西,久相对增加了点难度。那我们失配数组每个值出现的次数,如果最终nxt[len](即整个串的最长后缀)出现过不止一次,就可以输出答案了。但是这样写还需要考虑点细节。比如aaaa的情况,在中间出现的并不能 展开全文
头像 狂点技能树
发表于 2021-05-11 21:14:31
题解思路:参考楼下大佬的思路:是否有和最后一个next[]相同的next值在数组中间出现,若存在最后一个next就是答案。否则,next[最后一个next]才是解(当然,特判解不存在)。 这里重点贴一下代码,其中未注释代码为从 0 开始的 next 数组求解,注释的代码则是从 1 开始的 next 展开全文
头像 andif
发表于 2023-06-11 01:20:42
题目描述 求一个最长的子串,满足下面三个性质 子串是原串的前缀 子串是原串的后缀 除了前缀和后缀,还在其他地方出现过一次 思路 首先,这个答案子串肯定是原串的border,那么我们就把nxt[n]…nxt[nxt[n]]…nxt[…nxt[n]]nxt[n] \dots nxt[nxt[n]] 展开全文