Codeforces Round #306 (Div. 2) A
Posted liguangsunls
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round #306 (Div. 2) A相关的知识,希望对你有一定的参考价值。
题意
给一个字符串(长度<=10^5)。问当中有没有一个”BA”和一个”AB”呢?假设都有而且它们不反复(即ABA不算),输出YES。否则输出NO。
思路
一開始想简单了…..
我们扫一遍,把全部”AB”字符串中A的索引放入一个vector a,把全部”BA”字符串中B的索引放入还有一个vector b。最后扫一遍两个vector。假设发现一个b的值既不是一个a的值+1,也不是那个a的值-1,那么肯定就存在不反复的”BA”和”AB”了。
代码
#include <cstdio>
#include <cstring>
#include <vector>
using namespace std;
const int maxn = 100010;
char s[maxn];
vector<int> a;
vector<int> b;
int main()
{
scanf("%s",s);
int len = strlen(s);
bool flag1 = false;
bool flag2 = false;
for(int i = 0 ; i < len ; i ++) {
if(s[i] == ‘A‘ && s[i+1] == ‘B‘) {
a.push_back(i);
}
if(s[i] == ‘B‘ && s[i+1] == ‘A‘) {
b.push_back(i);
}
}
for(int i = 0 ; i < a.size() ; i ++) {
for(int j = 0 ; j < b.size() ; j ++) {
if(a[i]!=b[j]+1 && a[i]!=b[j]-1) {
printf("YES\n");
return 0;
}
}
}
printf("NO\n");
return 0;
}
以上是关于Codeforces Round #306 (Div. 2) A的主要内容,如果未能解决你的问题,请参考以下文章
Codeforces Round #306 (Div. 2) 题解
Codeforces Round #306 (Div. 2) A
「日常训练」Two Substrings(Codeforces Round 306 Div.2 A)
「日常训练」Regular Bridge(Codeforces Round 306 Div.2 D)
「日常训练」Divisibility by Eight(Codeforces Round 306 Div.2 C)
「日常训练」Brackets in Implications(Codeforces Round 306 Div.2 E)