题目链接:
注意
- 三个字眼:“第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直接忽略,没用。
输入样例:
j454HkCTOtFN5uhJ65tHkCtOtFN4&.\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\n", i); break; } } } }}