zoukankan      html  css  js  c++  java
  • 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;
    }
    

      

  • 相关阅读:
    Docker
    内存与缓存
    硬盘和内存的关系
    磁盘和硬盘、软盘
    mysql和redis的区别
    BZOJ 3110 k大数查询 (树套树)
    Codeforces 1303E Erase Subsequences (子序列匹配)
    Codeforces 1304E 1-Trees and Queries (树上距离+思维)(翻译向)
    BZOJ 2161 布娃娃(权值线段树)
    2019icpc徐州现场赛 H Yuuki and a problem (树状数组套主席树)
  • 原文地址:https://www.cnblogs.com/zero-begin/p/4555076.html
Copyright © 2011-2022 走看看