Codeforces - 550A - Two Substrings
题目大意
给你一个字符串 s
,要你判断是否有 AB
和 BA
同时出现在字符串中,但是不能连续,例如不能 ABA
这种。
解析
其实就是个简单的模拟题,但是还是错了好几次,还是菜。。。
给几个特殊样例:
ABABAB YES
ABAXXXAB YES
ABA NO
ABAB NO
ABABA YES
处理就是当出现 ABA
或者 BAB
的时候,统计 AB
和 BA
都出现了,但是统计完不判断,而是跳过这三个字符。
import java.io.BufferedInputStream;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(new BufferedInputStream(System.in));
String str = cin.next();
boolean isAB = false, isBA = false;
for (int i = 0; i < str.length() - 1; i++) {
if (str.charAt(i) == 'B' && str.charAt(i + 1) == 'A') {
if (isAB) {
System.out.println("YES");
return;
} else {
if(i < str.length()-2 && str.charAt(i+2) == 'B') { //BAB
isAB = true;
i += 2;// 跳过
}
isBA = true;
}
}
if (str.charAt(i) == 'A' && str.charAt(i + 1) == 'B') {
if (isBA ) {
System.out.println("YES");
return;
} else {
if(i < str.length()-2 && str.charAt(i+2) == 'A') { // ABA
isBA = true;
i += 2; // 跳过
}
isAB = true;
}
}
}
System.out.println("NO");
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论