题目概述
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).
链接
分析
要注意两点
- 不能重叠
- ABA究竟是算AB还是BA
对于问题2,如果当作AB不行,我们要把它看作BA看看是否可行
代码
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
string s;
getline(cin, s);
int index = -1;
for (int i = 0; i < s.length(); ++i)
if (s[i] == 'A' && s[i + 1] == 'B'){
index = i;
break;
}
if (index != -1)
for (int i = 0; i < s.length(); ++i) {
if (i == index + 1 || i == index - 1)
continue;
if (s[i] == 'B' && s[i + 1] == 'A'){
printf("YES\n");
return 0;
}
}
index = -1;
for (int i = 0; i < s.length(); ++i)
if (s[i] == 'B' && s[i + 1] == 'A'){
index = i;
break;
}
if (index != -1)
for (int i = 0; i < s.length(); ++i) {
if (i == index - 1 || i == index + 1)
continue;
if (s[i] == 'A' && s[i + 1] == 'B'){
printf("YES\n");
return 0;
}
}
printf("NO\n");
return 0;
}