题解
1.模拟题,注意细节
2.时间复杂度 \(O(n·sqrt(n))\)
code
#include<bits/stdc++.h>
using namespace std;
int n;
string s;
int check(int len)
{
int flag=0;
for(int k=0;k<len;k++)
{
int a[26]={0};
for(int i=k;i<n;i+=len)
{
a[s[i]-'a']++;
}
sort(a,a+26,greater<>());
if(a[0]==n/len) continue;//如果只出现了一个数
else if(a[0]==n/len-1&&a[1]==1) flag++;//如果出现了两个数,且只能出现一次
else return 0;
if(flag>1) return 0;
}
return 1;
}
int main()
{
int t;
cin>>t;
while(t--)
{
cin>>n>>s;
int ans=n;
for(int i=1;i<=n;i++)
{
if(n%i==0)
{
if(check(i))
{
ans=i;
break;
}
}
}
cout<<ans<<endl;
}
return 0;
}
标签:return,int,cin,len,Substring,flag,Nearly,Repeating
From: https://www.cnblogs.com/pure4knowledge/p/18103925