原题:https://www.lydsy.com/JudgeOnline/problem.php?id=1355
题解:找出字符串中的最短循环节。显然是 n-nxt[n]
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1e6+10;
int n,nxt[N];
char t[N];
int main(){
// freopen("bzoj1355.in","r",stdin);
scanf("%d",&n);
scanf("%s",t+1);
nxt[0]=-1;
for(int i=1,j;i<=n;i++){
j=nxt[i-1];
while(j!=-1 && t[i] != t[j+1]) j=nxt[j];
nxt[i]=++j;
}
printf("%d\n",n-nxt[n]);
// for(int i=1;i<=n;i++) printf("%d ",nxt[i]);printf("\n");
return 0;
}