zoukankan      html  css  js  c++  java
  • Two Substrings

    Two Substrings

    time limit per test
    2 seconds
    memory limit per test
    256 megabytes
    input
    standard input
    output
    standard output

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

    正搜一边,反搜一边。

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    char ch[100005];
    int main(){
        bool flag1 = 0;
        bool sign1 = 0;
        bool flag2 = 0;
        bool sign2 = 0;
        scanf("%s",&ch);
        int len = strlen(ch);
        for(int i = 0; i < len; i++){
            if(!flag1 && ch[i] == 'A' && ch[i+1] == 'B'){
                flag1 = 1;
                i++;
            }
            else if(!sign1 && ch[i] == 'B' && ch[i+1] == 'A'){
                sign1 = 1;
                i++;
            }
        }
        for(int i = len-1; i >= 0; i--){
            if(!sign2 && ch[i] == 'A' && ch[i-1] == 'B'){
                sign2 = 1;
                i--;
            }
            else if(!flag2 && ch[i] == 'B' && ch[i-1] == 'A'){
                flag2 = 1;
                i--;
            }
        }
        if((sign1 && flag1) || (sign2 && flag2)){
            puts("YES");
        }
        else puts("NO");
        return 0;
    }
  • 相关阅读:
    Linux开机启动详解
    git配置多用户多平台
    CentOS7 启动docker.service失败(code=exited, status=1/FAILURE)
    Linux 利用lsof命令恢复删除的文件
    56.storm 之 hello world (集群模式)
    55.storm 之 hello word(本地模式)
    54.Storm环境搭建
    53.storm简介
    深入浅出Mybatis-分页
    storm:最火的流式处理框架
  • 原文地址:https://www.cnblogs.com/ACMessi/p/4858039.html
Copyright © 2011-2022 走看看