• Codeforces Round #306 (Div. 2)——A——Two Substrings


    You are given string s. Your task is to determine if the given string s contains two non-overlapping substrings "AB" and "BA" (the substrings can go in any order).

    Input

    The only line of input contains a string s of length between 1 and 105 consisting of uppercase Latin letters.

    Output

    Print "YES" (without the quotes), if string s contains two non-overlapping substrings "AB" and "BA", and "NO" otherwise.

    Sample test(s)
    input
    ABA
    output
    NO
    input
    BACFAB
    output
    YES
    input
    AXBYBXA
    output
    NO
    Note

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

     智商被压制。。被hack了,只要倒着再判断一下就行

    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    int main()
    {
        char a[100110];
        while(~scanf("%s",&a)){
            int n = strlen(a);
            int t1 ,t2 ;
            t1 = t2 = 0;
            int i = 0;
            while(i < n){
                if(a[i] == 'A' && a[i+1] == 'B'&&t1 == 0){
                t1++;
                i++;}
                else if(a[i] == 'B' && a[i+1] == 'A'&&t2 == 0){
                t2++;
                i++;
                }
                i++;
            }
            if(t1 > 0 && t2 > 0){
                printf("YES
    ");
                continue;
            }
             i = n-1;
            t1 = t2 = 0;
            while(i >= 0){
                if(a[i] == 'A' && a[i+1] == 'B'&& t1 == 0){
                    t1++;
                    i--;
                }
                else if(a[i] == 'B' && a[i+1] == 'A' && t2 == 0){
                    t2++;
                    i--;
                }
                i--;
            }
            if(t1 > 0 && t2 > 0)
            printf("YES
    ");
            else printf("NO
    ");
            }
        return 0;
    }
    

      

  • 相关阅读:
    一些常用的正则表达式
    ASP.net国际化页面可以选择输出语言
    SQL 2008 数据表导入到 ORACLE 10g
    转载 SQL Server 2008中增强的汇总技巧
    类似于行转列的一种需求
    第一次
    很奇怪的一个SQL 语句
    MS SQL 中 FULL JOIN 的用法
    [转载]网络编辑必知常识:什么是PV、UV和PR值 zz
    寒假学习2实验一Linux系统的安装和常用命令
  • 原文地址:https://www.cnblogs.com/zero-begin/p/4555076.html
Copyright © 2020-2023  润新知