Description
给你一个字符串,它是由某个字符串不断自我连接形成的。 但是这个字符串是不确定的,现在只想知道它的最短长度是多少.
【题目分析】
简单的KMP水题,只需要输出l-next[l]就可以了。
【代码】
#include<cstdio>
#include<cstring>
char s[1000010];
int next[1000010];
int main()
{
int i,j,k,m,n,p,q,x,y,z,l;
scanf("%d%s",&l,s+1);
for (i=2,j=0;i<=l;i++)
{
while (j&&s[i]!=s[j+1]) j=next[j];
if (s[i]==s[j+1]) j++;
next[i]=j;
}
printf("%d\n",l-next[l]);
}
本文介绍了一种使用KMP算法求解由未知字符串通过不断自我连接形成的目标字符串的最短长度的方法。只需计算特定的next数组并输出l-next[l]即可得到答案。
388

被折叠的 条评论
为什么被折叠?



