1003 我要通过! (20 分)
输入
10
PAT
PAAT
AAPATAA
AAPAATAAAA
xPATx
PT
Whatever
APAAATAA
APT
APATTAA
输出
YES
YES
YES
YES
NO
NO
NO
NO
NO
NO
分析:
此题主要是找到规律,P和T都只能有一个,B必须存在且A*B=C。找到规律后设置标志位分别计算出A B C的个数即可
import java.util.Scanner;
/**
* 找规律 a P b T c
* a * b = c
* b != 0
* P T only one
*/
public class Main {
public String No(String patWord) {
//判断是否读到T P
int Tcount = 0;
boolean FlagT = false;
int Pcount = 0;
boolean FlagP = false;
//判断A的位置
int a = 0;
int b = 0;
int c = 0;
for (char cc : patWord.toCharArray()) {
if (cc == 'P') {
FlagP = true;
Pcount++;
} else if (cc == 'T') {
FlagT = true;
Tcount++;
} else if (cc == 'A') {
if (!FlagP && !FlagT) {
a++;
} else if (FlagP && !FlagT) {
b++;
} else {
c++;
}
} else {
return new String("NO");
}
}
if (Tcount != 1 || Pcount != 1 || a * b != c || b == 0)
return new String("NO");
return new String("YES");
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int i = 0;
int n = in.nextInt();
Main myPass = new Main();
while (i < n) {
String patWord = in.next();
System.out.println(myPass.No(patWord));
i++;
}
// System.out.println(new MyPass().No("AAPATAA"));
}
}