taiPyのお悩み解決ブログ

日々の発見をまとめます!

(編集中)学習記録:Java:C - Airport Code , AtCoder Beginner Contest 349

問題と解説へのリンク

問題 C - Airport Code https://atcoder.jp/contests/abc349/tasks/abc349_c

解説へのリンク

問題のポイントとメモ

  • 正規表現でも求めることが出来る!
  • T の最後の文字が X でない場合, T が S の部分列であるかどうか判定すればよいです.T の最後の文字が X である場合, T の最初の2文字が S の部分列であるかどうか判定すればよいです.

解答例

import java.util.Scanner;

public class Main {
    public static boolean check(String S, String T) {
        int i = 0;
        for (char t : T.toCharArray()) {
            while (i < S.length() && S.charAt(i) != t) {
                i++;
            }
            if (i == S.length()) {
                return false;
            }
            i++;
        }
        return true;
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String S = scanner.nextLine().toUpperCase();
        String T = scanner.nextLine();
        scanner.close();

        System.out.println(check(S, T.charAt(T.length() - 1) != 'X' ? T : T.substring(0, T.length() - 1)) ? "Yes" : "No");
    }
}

正規表現バージョン

ChatGPTに変換してもらったがTLEだった。うん。他のコードを参考にするか?C++など。