题目链接:点击打开链接
题目大意:
给你一个串,让你求这个串的一个同时是前缀,后缀(这个说法好像不太对)且在串中出现过的最长子串。
举个例子:
对于串 fixprefixsdfix 就应该输出fix.
解题思路:
首先这个串同时是前缀和后缀,那么自然就想到了kmp算法中的next数组。因为next数组的值正好符合题目最长要求。但是同时要求这个串在整个串中间出现过,那就暴力枚举一发即可,将所有可能的长度都枚举一遍,这时候我们就发现,你每次枚举的长度其实是用next数组在跳跃的,具体还是要理解清楚next数组的性质。
其次要说明一点就是,这个串可以部分与前缀和后缀重合但不能完全重合(这不废话嘛),例如 papapapap 答案是 papap 。就在kmp模板里稍微改一下即可。
以下贴代码,
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <qu