当前位置:网站首页>1003 我要通过 (20 分)

1003 我要通过 (20 分)

2022-08-11 06:45:00 呆比特

1003 我要通过! (20 分)

题目要求:
在这里插入图片描述
在这里插入图片描述
代码:

import java.util.Scanner;

public class Main {
    
    public static void main(String[] args) {
    
        Scanner scan = new Scanner(System.in);
        //輸入
        int n = scan.nextInt();
        scan.nextLine();
        //逐个判断
        for (int i = 0; i < n; i++) {
    
            String str = scan.nextLine();
            if (check(str)){
    
                System.out.println("YES");
            } else{
    
                System.out.println("NO");
            }
        }
    }
    private static boolean check(String str){
    
        boolean flag = true;

        //判断字符串中有且只由PAT三个字符组成
        String s = str.trim().replaceAll("P", "").replaceAll("A", "").replaceAll("T", "");
        if (!"".equals(s)){
    
            flag = false;
        }
        //判断PT唯一
        if (!(str.indexOf("P") == str.lastIndexOf("P") && str.indexOf("T") == str.lastIndexOf("T"))){
    
            flag = false;
        }
        //判断A的个数
        int left = str.indexOf("P");
        int mid = str.indexOf("T") - left - 1;
        int right = str.endsWith("A") ? str.lastIndexOf("A") - str.indexOf("T") : 0;

        if (!(right == left * mid)){
    
            flag = false;
        }
        //判断P在T的前面
        if (str.indexOf("T") - str.indexOf("P") - 1 <= 0){
    
            flag = false;
        }
        return flag;
    }
}

结果:
在这里插入图片描述

原网站

版权声明
本文为[呆比特]所创,转载请带上原文链接,感谢
https://blog.csdn.net/NICK_53/article/details/123156271