题意:给出字符串s 包含空格.问是否能把s分成若干个区间.满足每个字符串只会落在某个区间,并且每个区间长度都相同.|s|<=1e5.
因为一个字符串不会落在多个区间上 所有分割的位置只能为空格.
因为一个字符串不会落在多个区间上 所有分割的位置只能为空格.
枚举区间长度x,判断分割点是否为空格即可O(nlogn).
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e5+5,mod=1e9+7;
char s[N];
//3 4 10 11 7
bool solve()
{
int len=strlen(s+1);
for(int x=2;2*(x-1)<=len;x++)//len =x-1
{
bool flag=true;
int i=x;
while(i<=len)
{
if(s[i]!=' ')
{
flag=false;
break;
}
i+=x;
}
if(flag&&i==len+1)
return true;
}
return false;
}
int main()
{
int T;
cin>>T;
getchar();
while(T--)
{
gets(s+1);
if(solve())
printf("YES\n");
else
printf("NO\n");
}
return 0;
}