题目:http://codeforces.com/problemset/problem/550/A
题目大意:查找输入的字符串中有没有“AB”“BA”这两个字符串且两个字符串没有重叠的部分
思路:用find()函数查找“AB”第一次出现的位置,再查找“BA”第一次出现的位置(从“AB”第一次出现的位置之后找),由于可能存在“ABAXXXBA”这样的样例,所以再将整个字符串查找一遍,先查找“BA”第一次出现的位置,在查找“AB”第一次出现的位置即可
AC代码
#include <iostream>
using namespace std;
int main()
{
string s;
int len,a,b,c,d;
cin>>s;
len=s.length();
if(len<=3)
cout<<"NO"<<endl;
else
{
a=s.find("AB");
b=s.find("BA",a+2);
c=s.find("BA");
d=s.find("AB",c+2);
if(a!=-1&&b!=-1||c!=-1&&d!=-1)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
return 0;
}