#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
vector<int> v;
char s[N];
vector<int> getnxt(string s) {
int n = (int)s.length();
vector<int> pi(n);
for (int i = 1; i < n; i++) {
int j = pi[i - 1];
while (j > 0 && s[i] != s[j]) j = pi[j - 1];
if (s[i] == s[j]) j++;
pi[i] = j;
}
return pi;
}
int T;
int main(){
scanf("%d",&T);
while(T--){
scanf("%s",s);
v=getnxt(s);int sz=v.size();
int tp=sz-v[sz-1],tp2=sz%tp;
// cout<<tp<<endl;
if(tp2==0&&tp<sz) cout<<0<<endl;
else if(tp2==0)cout<<sz<<endl;
else cout<<tp-tp2<<endl;
}
}
Cyclic Nacklace(KMP
最新推荐文章于 2022-03-14 18:13:28 发布