题意:除去标点,符合ababa 或 ababcab 格式且a,b,c各不相等即输出yes。
<span style="font-size:18px;">#include <stdio.h>
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
char s[55];
string str;
scanf("%s",s);
int l=strlen(s);
int i,j;
for(i=0;i<l;i++) //除去标点
{
if(isalpha(s[i]))
str+=s[i];
}
int flag=0;
l=str.length();
for(i=1;i<l/2 && !flag;i++) //从1开始遍历找A
{
for(j=1;j<l/2 && !flag;j++) //从1开始遍历找B
{
string a=str.substr(0,i); // str.(x,y). x:起始位置,y:长度.
string b=str.substr(i,j);
if(a==b)
continue;
if(a+b+a+b+a==str)
{
flag=1;
break;
}
if(l-3*(i+j)>0)
{
string ab=a+b;
string c=str.substr(2*i+2*j,str.length()-3*(i+j));
if(a==c || b==c)
continue ;
if(ab+ab+c+ab==str)
{
flag=1;
break;
}
}
}
}
if(flag)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}
</span>
额,个人感觉c++一些库函数还是挺好用的。