Codeforces - 550A - Two Substrings

发布于 2024-05-07 07:27:51 字数 1904 浏览 12 评论 0

题目大意

给你一个字符串 s ,要你判断是否有 ABBA 同时出现在字符串中,但是不能连续,例如不能 ABA 这种。

解析

其实就是个简单的模拟题,但是还是错了好几次,还是菜。。。

给几个特殊样例:

ABABAB       YES
ABAXXXAB     YES
ABA          NO
ABAB         NO
ABABA        YES

处理就是当出现 ABA 或者 BAB 的时候,统计 ABBA 都出现了,但是统计完不判断,而是跳过这三个字符。

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

姐不稀罕

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

内心激荡

文章 0 评论 0

JSmiles

文章 0 评论 0

左秋

文章 0 评论 0

迪街小绵羊

文章 0 评论 0

瞳孔里扚悲伤

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文