提交时间:2024-01-04 13:04:50

运行 ID: 119123

#include <bits/stdc++.h> using namespace std; const int MAXN=1000010; int n,Next[MAXN]; char s[MAXN]; void change(int m,char*t) { Next[1]=0; for(int i=2,j=0;i<=m;i++){ while(j>0&&t[i]!=t[j+1]) j=Next[j]; if(t[i]==t[j+1])j++; Next[i]=j; } } int main() { cin>>n>>s+1; change(n,s); for(int i=n;i>=1;i--){ if(!Next[i]){ cout<<i; break; } } return 0; }