题意:如果字符串中有AB且有BA,而且他们的位置不重合,就输出YES,否则NO。
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
const int maxm=1e5+10;
char s[maxm];
int main()
{
while(scanf("%s",s)!=EOF)
{
int len=strlen(s);
int ok1=0,ok2=0,ok3=0;
int ok=0;
for(int i=0; i<len-1; i++)
{
if(!ok1)
{
if((s[i]=='A'&&s[i+1]=='B'&&s[i+2]=='A')||(s[i]=='B'&&s[i+1]=='A'&&s[i+2]=='B'))
{
ok1=1;
i+=2;
continue;
}
}
if(s[i]=='A'&&s[i+1]=='B')
{
ok2=1;
i++;
}
if(s[i]=='B'&&s[i+1]=='A')
{
ok3=1;
i++;
}
if((ok2&&ok3)||((ok2||ok3)&&ok1))
{
ok=1;
break;
}
}
if(ok)
{
printf("YES\n");
}
else
{
printf("NO\n");
}
}
return 0;
}