大意:给定一个字符串,求所有可能的既是前缀又是后缀的字串长度。
分析:按题目的意思很像求KMP中的next数组。next[len]是最大的前缀-后缀字符串长度,以此类推next[next[len]]同样为满足条件的前缀-后缀字符串长度。
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char str[400005];
int len, next1[400005], ans[400005];
void getnext()
{
int i = 0, j = -1;
next1[0] = -1;
while (i < len)
{
if (j == -1 || str[i] == str[j])
{
i++;
j++;
next1[i] = j;
}
else
j = next1[j];
}
}
int main