• PAT乙级(Basic Level)真题,福尔摩斯的约会


    题目描述

    大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm”。
    大侦探很快就明白了,字条上奇怪的乱码实际上就是约会的时间“星期四 14:04”,
    因为前面两字符串中第1对相同的大写英文字母(大小写有区分)是第4个字母'D',代表星期四;第2对相同的字符是'E',那是第5个英文字母,代表一天里的第14个钟头(于是一天的0点到23点由数字0到9、以及大写字母A到N表示);
    后面两字符串第1对相同的英文字母's'出现在第4个位置(从0开始计数)上,代表第4分钟。现给定两对字符串,请帮助福尔摩斯解码得到约会的时间。

    输入描述:

    输入在4行中分别给出4个非空、不包含空格、且长度不超过60的字符串。

    输出描述:

    在一行中输出约会的时间,格式为“DAY HH:MM”,其中“DAY”是某星期的3字符缩写,即MON表示星期一,TUE表示星期二,WED表示星期三,THU表示星期
    四,FRI表示星期五,SAT表示星期六,SUN表示星期日。题目输入保证每个测试存在唯一解。

    输入例子:

    3485djDkxh4hhGE
    2984akDfkkkkggEdsb
    s&hgsfdk
    d&Hyscvnm

    输出例子:THU 14:04

    思路:
    1.第一二个字符比较:判断第一个字母是否相同
    2.第一二个字符比较:判断第二个字符是否相同,这个是在第一个大写字母相同的基础上,向后查找有没有相同字符,取得的字符如果是数字,那么直接将其输出,如果是字母,则要减去相应的ASCII值
    3.第三四个字符比较,判断第一对相同的英文字母,取其下标
    代码:
      1 import java.util.Scanner;
      2 
      3 public class Main{
      4 
      5     public static void main(String[] args) {
      6         Scanner sc=new     Scanner(System.in);
      7         String []arr=new String[4]; 
      8         char day = 0;
      9         int dayShu=0;
     10         char hour = 0;
     11         int hourShu=0;
     12         int fen = 0;
     13         for(int i=0;i<4;i++) {
     14             String str=sc.nextLine();
     15             if(str.length()<=60&&str.length()>0) {
     16                 /*将4个字符串存入一个数组中*/
     17                 arr[i]=str;
     18             }else {
     19                 break;
     20             }
     21         }
     22         /*
     23          * 1.比较第一个和第二个字符串,判断第一个大写字母
     24          * 2.比较第一个和第二个字符串,判断第二个大写字母
     25          * 3.比较第三个和第四个字符串,判断第一个英文字母(不判断大小写)
     26          * 4.输出的规范为THU 14:04,如果分小于十,那么要补0
     27          */
     28         int count=0;
     29         //1,2
     30         for(int i=0;i<arr[0].length();i++) {
     31             for(int j=0;j<arr[1].length();j++) {
     32                 //判断是否为大写字母
     33                 //Character.isLowerCase(char c)判断字母小写,
     34                 //Character.isUpperCase(char c)判断字母大写,
     35                 if(Character.isUpperCase(arr[0].charAt(i))&&Character.isUpperCase(arr[1].charAt(j))) {
     36                     //如果count==0,那么是第一次判断
     37                     //如果count==1,那么是第二次判断
     38                     //如果count==2,那么是第三次判断
     39                     if(count==0) {
     40                         if(arr[0].charAt(i)==arr[1].charAt(j)) {
     41                             count++;
     42                             day=arr[1].charAt(j);
     43                             dayShu=j;
     44                             break;
     45                         }
     46 
     47                     } 
     48                 }else {
     49                     continue;
     50                 }
     51             }
     52         }
     53         //2.
     54         for(int i=dayShu+1;i<arr[0].length();i++) {
     55                 if((arr[0].charAt(i))==(arr[1].charAt(i))) {
     56                     hour=arr[1].charAt(i);
     57                 
     58                     break;
     59                 }
     60         }
     61         //3.
     62         for(int i=0;i<arr[2].length();i++) {
     63             if(Character.isLetter(arr[2].charAt(i))&&Character.isLetter(arr[3].charAt(i))) {
     64                 if((arr[2].charAt(i))==(arr[3].charAt(i))) {
     65                     fen=i;
     66                     break;
     67                 }
     68                 else {
     69                     continue;
     70                 }
     71             }
     72 
     73         }
     74 
     75         //4
     76         switch(day) {
     77         case 65:
     78             System.out.print("MON"+" ");
     79             break;
     80         case 66:
     81             System.out.print("TUE"+" ");
     82             break;
     83         case 67:
     84             System.out.print("WED"+" ");
     85             break;
     86         case 68:
     87             System.out.print("THU"+" ");
     88             break;
     89         case 69:
     90             System.out.print("FRI"+" ");
     91             break;
     92         case 70:
     93             System.out.print("SAT"+" ");
     94             break;
     95         case 71:
     96             System.out.print("SUN"+" ");
     97             break;
     98         default:
     99             break;
    100         }
    101 
    102         if(47<hour&&hour<58) {
    103             System.out.print("0"+hour+":");
    104         }else if(64<hour&&hour<79){
    105             System.out.print(hour-55+":");
    106         }
    107 
    108         if(fen<10) {
    109             System.out.println("0"+fen);
    110         }else {
    111             System.out.println(fen);
    112         }
    113     }
    114 }

    如果有简单的方法,可以在下面评论,互相进步,感谢批评指正!

  • 相关阅读:
    fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #include <windows.h>
    cvWaitKey 如果 cvNamedWindow就不会起作用
    Java 并发基础
    简化Getter 与 Setter 的插件 Lombok
    20、状态模式
    mybatis-generator 覆盖新增XML
    Jvm 虚拟机
    18、备忘录设计模式
    16、 观察者设计模式
    08、仲载者 -中间者模式
  • 原文地址:https://www.cnblogs.com/BLACKJT/p/12195939.html
Copyright © 2020-2023  润新知