1 /* 2 水题:遍历一边先找AB,再BA,再遍历一边先找BA,再AB,两种情况满足一种就YES 3 */ 4 #include <cstdio> 5 #include <iostream> 6 #include <cstring> 7 #include <cmath> 8 #include <algorithm> 9 #include <vector> 10 #include <map> 11 #include <queue> 12 #include <set> 13 #include <string> 14 #include <stack> 15 using namespace std; 16 17 typedef long long ll; 18 const int MAXN = 1e5 + 10; 19 const int INF = 0x3f3f3f3f; 20 char s[MAXN]; 21 22 int main(void) //Codeforces Round #306 (Div. 2) A. Two Substrings 23 { 24 while (scanf ("%s", s) == 1) 25 { 26 bool ok1 = false, ok2 = false, ok3 = false, ok4 = false; 27 int len = strlen (s); int p = 0; 28 for (int i=0; i<len; ++i) 29 { 30 if (i < len - 1 && !ok1 && s[i] == 'A' && s[i+1] == 'B') 31 { 32 ok1 = true; i++; 33 } 34 else if (i < len - 1 && ok1 && s[i] == 'B' && s[i+1] == 'A') 35 { 36 ok2 = true; break; 37 } 38 } 39 for (int i=0; i<len; ++i) 40 { 41 if (i < len - 1 && !ok3 && s[i] == 'B' && s[i+1] == 'A') 42 { 43 ok3 = true; i++; 44 } 45 else if (i < len - 1 && ok3 && s[i] == 'A' && s[i+1] == 'B') 46 { 47 ok4 = true; break; 48 } 49 } 50 51 if ((ok1 && ok2) || (ok3 && ok4)) puts ("YES"); 52 else puts ("NO"); 53 } 54 55 56 return 0; 57 } 58 59 /* 60 ABA 61 BACFAB 62 AXBYBXA 63 */