输入字符串,判断是否同时存在AB、BA的子串,输出yes/no。
Input
输入只含有'A'、'B'字符的字符串。
Output
判断是否同时存在''AB"、"BA"的子串,输出yes/no。
Input示例
ABBBBBA
BABABABA
BBBBBABA
AAAAAABAB
Output示例
yes
yes
no
no
解题思想: 利用指针遍历字符串,找到同时存在"AB"、"BA"的子串的情况,否则输出no。
参考代码:
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
int main()
{
char str[100];
while(cin>>str)
{
bool ab=false,ba=false;//标识是否找到AB/BA
char *p=str;
while(*p!='\0')//遍历字符串
{
if(*p=='A'&&ab==false)
{
p++;
if(*p=='B')
{
ab=true;
p++;
continue;
}
else p--;
}
if(*p=='B'&&ba==false)
{
p++;
if(*p=='A')
{
ba=true;
p++;
continue;
}
else p--;
}
p++;
}
if(ab&&ba)//是否同时存在"AB"、"BA"
{
cout << "yes"<< endl;
}
else cout<< "no" <<endl;
}
return 0;
}