ECNU机试之判断字符串是否存在AB、BA子串

输入字符串,判断是否同时存在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 

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" <

你可能感兴趣的:(ECNU机试之判断字符串是否存在AB、BA子串)