首页 > 其他 > 详细

CF550A Two Substrings

时间:2021-05-06 14:50:04      阅读:13      评论:0      收藏:0      [点我收藏+]

原题链接

  • 题意:求字符串中是否存在一个 \(AB\)\(BA\),他们不重叠。
  • 题解:直接把 \(BAB\)\(ABA\) 记录数量的同时,转化为别的字符,然后统计 \(AB\)\(BA\) 然后判断答案。
  • 代码:
#include <iostream>
#include <cstring>
using namespace std;
typedef long long ll;
const int N = 5e5 + 9;
const ll mod = 1e9 + 7;
bool vis[N];
char s[N];
int main() {
    int ab_cnt = 0;
    int ba_cnt = 0;
    int aba_cnt = 0;
    cin >> (s + 1);
    int n = strlen(s + 1);
    for (int i = 1; i <n-1; i ++) {
        if (s[i] == ‘B‘ && s[i + 1] == ‘A‘ && s[i + 2] == ‘B‘) {
            aba_cnt++;
            s[i] = s[i + 1] = s[i+2] = ‘?‘;
        }
        if (s[i] == ‘A‘ && s[i + 1] == ‘B‘ &&s[i + 2] == ‘A‘) {
            aba_cnt++;
            s[i] = s[i + 1] = s[i + 2] = ‘?‘;
        }
    }
    for (int i = 1; i < n; i ++) {
        if (s[i] == ‘A‘ && s[ i + 1] == ‘B‘) {
            ab_cnt++;
        } 
        if (s[i] == ‘B‘ && s[i + 1] == ‘A‘)ba_cnt++;
    }
    cout << s << endl;
    if ( (ab_cnt >= 1&&ba_cnt >= 1) || (ab_cnt >=1 && aba_cnt >= 1 )|| (ba_cnt >= 1 && aba_cnt >= 1)||(aba_cnt > 1)){
        cout << "YES\n";
    } else cout << "NO\n";
}

CF550A Two Substrings

原文:https://www.cnblogs.com/Xiao-yan/p/14734579.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!