题目链接:1014 福尔摩斯的约会
注意
- 三个字眼:“第1对”,“第2对”,“第1对”,因此如果你用了循环,别忘了
break
,因为后面也可能有相同的字母 - 星期几,第1对相同的
A-G
,A
代表"MON"
,D
代表THU
- 小时(钟头),
0-9
或A-N
- 题目保证有唯一解,因此不需要使用
Math.min(int a, int b)
获取较短长度,来避免越界 - 分钟,
A-Z
或a-z
- 小时和分钟任何时候都是占2位
- 长度不超过60直接忽略,没用。
输入样例:
j454HkCTOtFN5uh
J65tHkCtOtFN4
&.6wowpHnv
&.6WOWpH
输出样例:
WED 15:07
上面的样例能测试注意中涉及到的所有细节。
代码
/**
* Score: 20
* Run Time: 120ms
* @author wowpH
* @version 1.6
*/
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
String[] s = new String[4];
String[] week = { "MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN" };
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 4; i++) {
s[i] = sc.next();// 输入
}
sc.close();
// 星期几
int i;
char ch;
int len = s[0].length();
for (i = 0; i < len; i++) {
ch = s[0].charAt(i);
if (ch == s[1].charAt(i)) {
if (ch >= 'A' && ch <= 'G') {// A~G
System.out.print(week[ch - 'A'] + " ");// 星期几
break;
}
}
}
// 小时
for (i = i + 1; i < len; i++) {
ch = s[0].charAt(i);
if (ch == s[1].charAt(i)) {
if (Character.isDigit(ch)) {// 0~9
System.out.printf("%02d:", ch - '0');
break;
} else if (ch >= 'A' && ch <= 'N') {// A~N
System.out.printf("%02d:", ch - 'A' + 10);
break;
}
}
}
// 分钟
len = s[2].length();
for (i = 0; i < len; i++) {
ch = s[2].charAt(i);
if (ch == s[3].charAt(i)) {
// A~Z或a~z
if (ch >= 'A' && ch <= 'Z' || ch >= 'a' && ch <= 'z') {
System.out.printf("%02d
", i);
break;
}
}
}
}
}