PAT乙级(Basic Level)真题,福尔摩斯的约会
Posted blackjt
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 }
如果有简单的方法,可以在下面评论,互相进步,感谢批评指正!
以上是关于PAT乙级(Basic Level)真题,福尔摩斯的约会的主要内容,如果未能解决你的问题,请参考以下文章
JAVA1004 成绩排名 (20分) PAT乙级 PAT (Basic Level) Practice(中文)
JAVA1003 我要通过!(20分) PAT乙级 PAT (Basic Level)Practice (中文)
JAVA1003 我要通过!(20分) PAT乙级 PAT (Basic Level)Practice (中文)
PAT乙级(Basic Level)练习题-NowCoder数列总结
JAVA1005 继续(3n+1)猜想 (25分) PAT乙级 PAT (Basic Level)Practice (中文)