您的位置:首页 > 其它

1003. 我要通过!(20)

2015-12-20 16:29 134 查看
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

import java.util.Scanner;

public class Main {
public static void main(String[] args){
Scanner in=new Scanner(System.in);
int num_pat=in.nextInt();
in.nextLine();

String[] str_pat=new String[num_pat];
//    Scanner in1=new Scanner(System.in);
for(int i=0;i<num_pat;i++){
str_pat[i]=in.nextLine();

}
in.close();
for(int i=0;i<num_pat;i++){
//System.out.println(str_pat[i]);
String answer=JudgePAT(str_pat[i]);
System.out.println(answer);
}

}

private static String JudgePAT(String arg){
int p_index=arg.indexOf("P");
//    System.out.println("p_index= "+p_index);
if(p_index<0){
return "NO";
}
String pre_PAT=arg.substring(0, p_index);
String aft_PAT=pre_PAT;
for(int i=0;i<p_index;i++){
if(pre_PAT.charAt(i)!='A'){
return "NO";
}
}
//    System.out.println(pre_PAT);
//    System.out.println(pre_PAT+"PAT"+aft_PAT);
String TolPAT=pre_PAT+"PAT"+aft_PAT;
int n=2;
while(TolPAT.length()<101){
if(TolPAT.equals(arg)){
return "YES";
}
aft_PAT+=pre_PAT;
TolPAT=TolPAT.substring(0, p_index+n)+"AT"+aft_PAT;
//      System.out.println(TolPAT);
n++;
}
return "NO";
}
}


遇到的问题:

1.读入一个整数(nextInt())之后再读字符串(nextLine()),要消除读整数之后剩下的回车符,否则第一个读到的字符串为空。

参考链接
http://zhidao.baidu.com/link?url=cLr8DKjzoju-tlYuyU1-rbSqjTpSUxVqzDZTyhu28Hf6DEA317KF1o_Wf8INy6VZ5RUfP1L830-jO1ZBeBRX-_
2.利用子串构造字符串
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: