PAT乙级 1014 福尔摩斯的约会
题目
分析
- 要输出日期,小时,分钟三个数字,根据第一二个字符串得出日期和小时,根据第三四个字符串可以得出分钟
- 第一二个字符串中,第一对相同的大写英文字母决定日期,A~G分别代表星期一到星期日
- 第一二个字符串中,第二对相同的大写英文字母或者数字决定小时,0点到9点用数字表示,10点到23点用A~N表示
- 第三四个字符串中,第一对相同的英文字母决定分钟,第几个位置的数相同,则表示是第几分钟,从0开始计算
- 找出符合条件的字母或数字,转换成时间后输出,小时和分钟若小于10,则按
0x
的格式输出
代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
String a = cin.next();
String b = cin.next();
String c = cin.next();
String d = cin.next();
String[] day = {"MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"};
int count = 1;
for (int i = 0; i < a.length() && i < b.length(); i++) {
boolean f = a.charAt(i) == b.charAt(i);
if (f && a.charAt(i) >= 'A' && a.charAt(i) <= 'G' && count == 1) {//判断日期
System.out.print(day[(a.charAt(i) - 'A')] + " ");
count++;
} else if (f && count == 2) { //判断小时
if (Character.isDigit(a.charAt(i))) { //当是数字时,小于10,输出时前面加个0
System.out.print("0" + a.charAt(i) + ":");
break;
} else if (a.charAt(i) >= 'A' && a.charAt(i) <= 'N') {//当是字母时
System.out.print((a.charAt(i) - 'A' + 10) + ":");
break;
}
}
}
for (int i = 0; i < c.length() && i < d.length(); i++) {//判断分钟
boolean f = c.charAt(i) == d.charAt(i);
if (f && (Character.isUpperCase(c.charAt(i)) || Character.isLowerCase(c.charAt(i)))) {//当是字母时
if (i < 10) System.out.print("0" + i); //小于10的情况,前面加个0
else System.out.println(i);
break;
}
}
cin.close();
}
}