問題と解説へのリンク
問題 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++など。