You are given string s. Your task is to determine if the given strings contains two non-overlapping substrings "AB" and "BA" (the substrings can go in any order).
InputThe only line of input contains a string s of length between1 and 105 consisting of uppercase Latin letters.
Print "YES" (without the quotes), if strings contains two non-overlapping substrings "AB" and "BA", and "NO" otherwise.
ABA
NO
BACFAB
YES
AXBYBXA
NO
In the first sample test, despite the fact that there are substrings "AB" and "BA", their occurrences overlap, so the answer is "NO".
In the second sample test there are the following occurrences of the substrings:BACFAB.
In the third sample test there is no substring "AB" nor substring "BA".
给出一行字符,判断是否出现两个不重叠的字串“AB”和“BA”
#include<iostream>
#include<string>
#include<string.h>
using namespace std;
int main()
{
char a[100000];//原本是string a,但在使用strstr(a,"AB")时报错,不知怎麽回事
while(cin>>a)
{
char *c;
if((c=strstr(a,"AB"))!=NULL&&strstr(c+2,"BA")!=NULL)
{
cout<<"YES"<<endl;continue;
}
else if((c=strstr(a,"BA"))!=NULL&&strstr(c+2,"AB")!=NULL)
{
cout<<"YES"<<endl;continue;
}
else cout<<"NO"<<endl;
}
return 0;
}
strstr(a,b);判断在串a中是否有串b,有的话返回b第一次出现的地址,否则返回NULL