package com.sort.test.pat; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map; import java.util.StringTokenizer; /** * @Author: Yang_f * @CreateTime: 2024-08-04 * @Description: * 字符串中必须仅有 P、 A、 T这三种字符,不可以包含其它字符; * 任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串; * 如果 aPbTc 是正确的,那么 aPbATca 也是正确的,其中 a、 b、 c 均或者是空字符串,或者是仅由字母 A 组成的字符串。 */ public class b_1003 { static BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); static String next() throws IOException { return in.readLine(); } public static void main(String[] args) throws IOException { StringTokenizer st = new StringTokenizer(next()); int n = Integer.parseInt(st.nextToken()); while(n-- > 0){ st = new StringTokenizer(next()); String string = st.nextToken(); boolean flag = true; Map<Character, Integer> map = new HashMap<>(); for (int i = 0; i < string.length(); i++) { char c = string.charAt(i); //判断是否包含其他字符 if(c != 'P' && c != 'A' && c != 'T'){ flag = false; } map.put(c, map.containsKey(c) ? map.get(c) + 1 : 1); //判断P T是否大于1 if ((null != map.get('P') && map.get('P') > 1) || (null != map.get('T') && map.get('T') > 1)) { flag = false; } } if (flag) { //判断是否都包含PAT int countP = string.indexOf('P'); int countA = string.indexOf('A'); int countT = string.indexOf('T'); // System.out.println(countA); if (countP == -1 || countA == -1 || countT == -1) { flag = false; }else { //判断P T顺序 if (map.get('A') == 1) { flag = countP < countA && countA < countT; } if (flag) { //判断A的个数是否符合 int A1 = string.substring(0, countP).length(); int A2 = string.substring(countP + 1, countT).length(); int A3 = string.substring(countT + 1).length(); flag = A1 * A2 == A3; } } } System.out.println(flag ? "YES" : "NO"); } } }
pat乙级-1003 我要通过!(java)
最新推荐文章于 2024-08-06 11:36:05 发布