PAT-basic-1014 福尔摩斯的约会 java
一、题目
大侦探福尔摩斯接到一张奇怪的字条:
我们约会吧!
3485djDkxh4hhGE
2984akDfkkkkggEdsb
s&hgsfdk
d&Hyscvnm
输入格式:
输入在 4 行中分别给出 4 个非空、不包含空格、且长度不超过 60 的字符串。
输出格式:
在一行中输出约会的时间,格式为 DAY HH:MM
,其中 DAY
是某星期的 3 字符缩写,即 MON
表示星期一,TUE
表示星期二,WED
表示星期三,THU
表示星期四,FRI
表示星期五,SAT
表示星期六,SUN
表示星期日。题目输入保证每个测试存在唯一解。
输入样例:
3485djDkxh4hhGE
2984akDfkkkkggEdsb
s&hgsfdk
d&Hyscvnm
输出样例:
THU 14:04
二、解析
这题很细节(有坑-,-)。
- 第一个是字符串的位数不一定是相等的,得取长度小的那个遍历。
- 第二个是严格限制相同的字符范围,比如第一对里面第一个是大写英文字母A-G,第二个是0-9和A-N。第二对里面是a-z和A-z。除了最后一个,不要图方便用Character.isLetter()。
三、代码
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String s1 = input.nextLine();
String s2 = input.nextLine();
String s3 = input.nextLine();
String s4 = input.nextLine();
StringBuffer sb = new StringBuffer();
int count = 0;
for(int i=0; i<Math.min(s1.length(), s2.length()); i++)
if(s1.charAt(i) == s2.charAt(i)){
char c = s1.charAt(i);
if(count == 0 && (c>='A' && c<='G')){
switch (c){
case 'A': sb.append("MON ");break;
case 'B': sb.append("TUE ");break;
case 'C': sb.append("WED ");break;
case 'D': sb.append("THU ");break;
case 'E': sb.append("FRI ");break;
case 'F': sb.append("SAT ");break;
case 'G': sb.append("SUN ");break;
}
count++;
}
else if(count == 1){
if((c>='0' && c<='9') || (c>='A' && c<='N')){
if(Character.isDigit(c)) sb.append("0"+c);
else
sb.append(c-55);
break;
}
}
}
sb.append(":");
for(int i=0; i<Math.min(s3.length(), s4.length()); i++)
if(s3.charAt(i) == s4.charAt(i)){
char c = s3.charAt(i);
if((c>='A' && c<='Z') || (c>='a' && c<='z')){
if(i<10)
sb.append("0" + i);
else
sb.append(i);
break;
}
}
System.out.print(sb.toString());
}
}