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を出力する.
サンプルを入力:
出力サンプル:
NO
コミットコード
時間の制限
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");
}
}
}