https://codeforces.com/problemset/problem/550/A
题意还是很好理解的,只不过这题我wa了好几发才AC,主要还是没有分析全面
思路:
我们首先用一个循环来从 AB 开始判断,然后再用一个循环从 BA 开始判断,然后综合一下两次的判断结果就行了
以下是代码实现:
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s;
cin>>s;
int len=s.size();
int cnt1=0,cnt2=0,cnt3=0,cnt4=0;
for(int i=0;i<len-1;i++)
{
if(s[i]=='A'&&s[i+1]=='B'&&cnt1==0)//找到一个 AB 之后就开始寻找 BA
{
i++;
cnt1++;
}
else if(s[i]=='B'&&s[i+1]=='A'&&cnt1>=1)//先找到 AB 才能再找 BA
{
i++;
cnt2++;
}
}
for(int i=0;i<len-1;i++)
{
if(s[i]=='B'&&s[i+1]=='A'&&cnt3==0)//找到一个 BA 之后就开始寻找 AB
{
i++;
cnt3++;
}
else if(s[i]=='A'&&s[i+1]=='B'&&cnt3>=1)//先找到 BA 才能再找 AB
{
i++;
cnt4++;
}
}
if((cnt1>=1&&cnt2>=1)||(cnt3>=1&&cnt4>=1)) cout<<"YES";
else cout<<"NO";
return 0;
}