PAT-乙級-Java-1003
阿新 • • 發佈:2018-12-01
1003 我要通過! (20 分)
“答案正確”是自動判題系統給出的最令人歡喜的回覆。本題屬於 PAT 的“答案正確”大派送 —— 只要讀入的字串滿足下列條件,系統就輸出“答案正確”,否則輸出“答案錯誤”。
得到“答案正確”的條件是:
- 字串中必須僅有
P
、A
、T
這三種字元,不可以包含其它字元; - 任意形如
xPATx
的字串都可以獲得“答案正確”,其中x
或者是空字串,或者是僅由字母A
組成的字串; - 如果
aPbTc
是正確的,那麼aPbATca
a
、b
、c
均或者是空字串,或者是僅由字母A
組成的字串。
現在就請你為 PAT 寫一個自動裁判程式,判定哪些字串是可以獲得“答案正確”的。
輸入格式:
每個測試輸入包含 1 個測試用例。第 1 行給出一個正整數 n (<10),是需要檢測的字串個數。接下來每個字串佔一行,字串長度不超過 100,且不包含空格。
輸出格式:
每個字串的檢測結果佔一行,如果該字串可以獲得“答案正確”,則輸出 YES
,否則輸出 NO
。
輸入樣例:
8 PAT PAAT AAPATAA AAPAATAAAA xPATx PT Whatever APAAATAA
輸出樣例:
YES
YES
YES
YES
NO
NO
NO
NO
Java程式碼實現:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); String length = input.nextLine(); Integer len = Integer.parseInt(length); String [] str = new String [len]; for(int i = 0;i<len;i++) { str[i] = input.nextLine(); } for(int i = 0;i<len;i++){ String result = business(str[i]); System.out.println(result); } } public static String business(String str) { String result = ""; int p = -1;//標記P的索引 int t = -2;//標記T的索引 for(int i = 0;i<str.length();i++) { String charStr = str.substring(i, i+1); if(!(charStr.equals("A")) && !(charStr.equals("P")) && !(charStr.equals("T"))) { //含有非法字元 result = "NO"; return result; } else { //沒有非法字元 if(charStr.equals("P")) { p = i; } if(charStr.equals("T")) { t = i; } } } if(str.contains("A") && str.contains("P") && str.contains("T")) { //p之前的A的個數:P //P,T之間的A的個數:t-p-1 //T之後的A的個數:str.length()-1-t if(p*(t-p-1) == str.length()-1-t) { result = "YES"; }else { result = "NO"; } }else { result = "NO"; } return result; } }