Two Substrings
2015-06-05 21:58
302 查看
Two Substrings
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
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).
Input
The only line of input contains a string s of
length between 1 and 105 consisting
of uppercase Latin letters.
Output
Print "YES" (without the quotes), if string s contains
two non-overlapping substrings "AB" and "BA", and "NO"
otherwise.
Sample test(s)
input
output
input
output
input
output
Note
In the first sample test, despite the fact that there are substrings "AB" and
"BA", their occurrences overlap, so the answer is "NO".
In the second sample test there are the following occurrences of the substrings: BACFAB.
In the third sample test there is no substring "AB" nor substring "BA".
给一个字符串,找AB和BA,但是AB和BA不能重合,比如ABA不算。直接就是模拟,分类,先找AB,再找BA,然后还有一个先找BA,再找AB。再定义一个标兵,最后输出。
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
char c[100005];
int main()
{
int i, j, m, n, leap;
scanf("%s", c);
int len = strlen(c); leap = 0; int leap1 = 0;
for (i = 0; i < len - 1; i++)
{
if (c[i] == 'A'&&c[i + 1] == 'B'&&!leap)
{
leap = 1;
i++;
}
else if (leap == 1 && !leap1&&c[i] == 'B'&&c[i + 1] == 'A')
leap1 = 1;
if (leap1 == 1)break;
}
if (leap1 == 1)
cout << "YES" << endl;
else
{
leap = leap1 = 0;
for (i = 0; i < len - 1; i++)
{
if (c[i] == 'B'&&c[i + 1] == 'A'&&!leap)
{
leap = 1;
i++;
}
else if (leap == 1 && !leap1&&c[i] == 'A'&&c[i + 1] == 'B')
leap1 = 1;
if (leap1 == 1)break;
}
if (leap1 == 1)
cout << "YES" << endl;
else
cout << "NO" << endl;
}
return 0;
}
Two Substrings
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
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).
Input
The only line of input contains a string s of
length between 1 and 105 consisting
of uppercase Latin letters.
Output
Print "YES" (without the quotes), if string s contains
two non-overlapping substrings "AB" and "BA", and "NO"
otherwise.
Sample test(s)
input
ABA
output
NO
input
BACFAB
output
YES
input
AXBYBXA
output
NO
Note
In the first sample test, despite the fact that there are substrings "AB" and
"BA", their occurrences overlap, so the answer is "NO".
In the second sample test there are the following occurrences of the substrings: BACFAB.
In the third sample test there is no substring "AB" nor substring "BA".
给一个字符串,找AB和BA,但是AB和BA不能重合,比如ABA不算。直接就是模拟,分类,先找AB,再找BA,然后还有一个先找BA,再找AB。再定义一个标兵,最后输出。
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
char c[100005];
int main()
{
int i, j, m, n, leap;
scanf("%s", c);
int len = strlen(c); leap = 0; int leap1 = 0;
for (i = 0; i < len - 1; i++)
{
if (c[i] == 'A'&&c[i + 1] == 'B'&&!leap)
{
leap = 1;
i++;
}
else if (leap == 1 && !leap1&&c[i] == 'B'&&c[i + 1] == 'A')
leap1 = 1;
if (leap1 == 1)break;
}
if (leap1 == 1)
cout << "YES" << endl;
else
{
leap = leap1 = 0;
for (i = 0; i < len - 1; i++)
{
if (c[i] == 'B'&&c[i + 1] == 'A'&&!leap)
{
leap = 1;
i++;
}
else if (leap == 1 && !leap1&&c[i] == 'A'&&c[i + 1] == 'B')
leap1 = 1;
if (leap1 == 1)break;
}
if (leap1 == 1)
cout << "YES" << endl;
else
cout << "NO" << endl;
}
return 0;
}
相关文章推荐
- 矩阵-向量求导法则
- 第十四周 项目一(3):小玩文件
- 参加第八届英特尔软件创新大赛-初赛前
- FragmentPagerAdapter
- HDU 3584 Cube (三维树状数组)
- [Python] 网络爬虫和正则表达式学习总结
- js获取项目根目录
- 转载: java的接口、类、属性、方法各有哪些修饰符
- Linux Page Cache机制
- Hadoop文件解压缩
- 在 VC6 中使用 GdiPlus-安装
- CSAPP缓冲区溢出攻击实验(上)
- Java模拟抢红包应用
- 面试题:说说Java中接口、类、成员变量、成员方法、构造方法有哪些访问修饰符和他们的作用范围
- AUC与ROC
- Fragement真正的解析
- [Java] Webservice之即时发布JWS教程 (一)
- CSAPP缓冲区溢出攻击实验(上)
- POJ 3009 Curling 2.0 回溯,dfs 难度:0
- 小管理 大智慧