1003.私は通過します!(20) JAVA pattern


1003.私は通過します!(20)
時間の制限
400 ms
メモリ制限
65536 kB
コード長制限
8000 B
クイズルーチン
Standard
作成者
CHEN, Yue
「答えが正しい」は、自動判定システムが与える最も喜ばしい返事だ.本題はPATの「答えが正しい」大派送に属する--読み込んだ文字列が以下の条件を満たす限り、システムは「答えが正しい」を出力し、そうでなければ「答えが間違っている」を出力する.
「正解」を得る条件は次のとおりです.
1.文字列にはP、A、Tの3文字しかなく、他の文字を含んではいけない.2.xPATxのような任意の形の文字列は、「正解」を得ることができ、xまたは空の文字列、またはアルファベットAのみからなる文字列である.3.aPbTcが正しい場合、aPbATcaも正しい.ここで、a,b,cはいずれも空の文字列、またはアルファベットAのみからなる文字列である.今すぐPATに自動審判プログラムを書いて、どの文字列が取得できるかを判定してください」
答えは正しい」.
入力フォーマット:各テスト入力には1つのテスト例が含まれます.1行目は自然数n(<10)を与え、検出する文字列の個数である.次に、各文字列は1行で、文字列の長さは100を超えず、スペースは含まれません.
出力フォーマット:各文字列の検出結果が1行を占め、その文字列が「正解」を得ることができればYESを出力し、そうでなければNOを出力する.
サンプルを入力:
8
PAT
PAAT
AAPATAA
AAPAATAAAA
xPATx
PT
Whatever
APAAATAA

出力サンプル:
YES
YES
YES
YES
NO
NO
NO

NO
コミットコード
package Basic1003;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		//        
		//         ,  Scanner,     ,         ,     
		/*
		 * Scanner intIn = new Scanner(System.in); int num = intIn.nextInt();
		 * 
		 * List list = new ArrayList(); while (num > 0) {
		 * Scanner stringIn = new Scanner(System.in); String str =
		 * stringIn.nextLine(); list.add(str); num--; } for (String x : list) {
		 * System.out.println(judge(x)); }
		 */

		//        
		int flagSum = 0;
		ArrayList stringList = new ArrayList();
		Scanner sc = new Scanner(System.in);
		flagSum = Integer.parseInt(sc.nextLine());
		for (int i = 0; i < flagSum; ++i) {
			stringList.add(sc.nextLine());
		}
		//   
		for (String x : stringList) {
			judge(x);
		}
	}

	//        
	//       ,return             ,           ,     
	/*
	 * public static String judge(String s) { int flag = 1; String pattern =
	 * "A*PA+TA*"; String pattern1 = "PA+T"; if (s.matches(pattern)) { if
	 * (s.matches(pattern1)) { flag = 1; } else { String temp[] =
	 * s.split("P|T"); int aLength = temp[0].length(); int bLength =
	 * temp[1].length(); int cLength = temp[2].length(); if ((cLength - aLength)
	 * / aLength == (bLength - 1)) { flag = 1; } else { flag = 0; } } } else {
	 * flag = 0; }
	 * 
	 * if (flag == 1) { return "YES"; } else { return "NO"; } }
	 */

	//        
	public static void judge(String s) {
		String pattern = "A*PA+TA*";
		String pattern1 = "PA+T";
		if (s.matches(pattern)) {
			if (s.matches(pattern1)) {
				System.out.println("YES");
			} else {
				String temp[] = s.split("P|T");
				int aLength = temp[0].length();
				int bLength = temp[1].length();
				int cLength = temp[2].length();
				if ((cLength - aLength) / aLength == (bLength - 1)) {
					System.out.println("YES");
				} else {
					System.out.println("NO");
				}

			}
		} else {
			System.out.println("NO");
		}
	}
}