zoukankan      html  css  js  c++  java
  • [CF550A] Two Substrings

    [CF550A] Two Substrings

    Description

    给你一个字符串S(1-10000),判断S中是否有BA,和AB这两个字串。要求二者不重叠。是输出“YES” 不是输出“NO”。

    Solution

    转化为长度为 n-1 的序列,AB 变成 1,BA 变成 2

    现在问题就是找两个距离不小于 2 的 1 和 2

    找出 1,2 的最小,最大位置比较即可

    #include <bits/stdc++.h>
    using namespace std;
    
    #define int long long
    
    string str;
    
    signed main()
    {
        ios::sync_with_stdio(false);
        cin >> str;
    
        int abmin = 1e9, abmax = -1, bamin = 1e9, bamax = -1;
        for (int i = 1; i < str.length(); i++)
        {
            if (str[i - 1] == 'A' && str[i] == 'B')
                abmin = min(abmin, i), abmax = max(abmax, i);
            if (str[i - 1] == 'B' && str[i] == 'A')
                bamin = min(bamin, i), bamax = max(bamax, i);
        }
    
        if (abmax - bamin > 1 || bamax - abmin > 1)
            cout << "YES";
        else
            cout << "NO";
    }
    
  • 相关阅读:
    os模块
    sys模块
    time时间模块
    collections模块
    修改Jenkins的主目录步骤
    jenkins管理
    求2个集合的差集
    MVC动态二级域名解析
    解决MVC 时间序列化的方法
    MVC修改视图的默认路径
  • 原文地址:https://www.cnblogs.com/mollnn/p/14429796.html
Copyright © 2011-2022 走看看