package com.sort.test.pat; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map; import java.util.StringTokenizer; /** * @Author: Yang_f * @CreateTime: 2024-08-10 * @Description:因为前面两字符串中第 1 对相同的大写英文字母(大小写有区分)是第 4 个字母 D,代表星期四; * 第 2 对相同的字符是 E ,那是第 5 个英文字母,代表一天里的第 14 个钟头(于是一天的 0 点到 23 点由数字 0 到 9、 * 以及大写字母 A 到 N 表示);后面两字符串第 1 对相同的英文字母 s 出现在第 4 个位置(从 0 开始计数)上,代表第 4 分钟。 */ public class b_1014 { static BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); static String next() throws IOException { return in.readLine(); } private static final int A = 16; public static void main(String[] args) throws IOException { //前两行 StringTokenizer st = new StringTokenizer(next()); String s1 = st.nextToken(); char[] chars1 = s1.toCharArray(); st = new StringTokenizer(next()); String s2 = st.nextToken(); char[] chars2 = s2.toCharArray(); int len1 = Math.min(chars1.length, chars2.length); //计算星期和小时 Map<String, Integer> map = selectIndex(chars1, chars2, len1); int day = map.get("day") % 7; String week = null; //计算星期 switch (day) { case 0: week = "SUN"; break; case 1: week = "MON"; break; case 2: week = "TUE"; break; case 3: week = "WED"; break; case 4: week = "THU"; break; case 5: week = "FRI"; break; case 6: week = "SAT"; break; } //计算小时 int h = map.containsKey("h2") ? map.get("h2") + 9 : map.get("h1"); StringBuilder hh = new StringBuilder(); hh = h < 10 ? hh.append("0").append(h) : hh.append(h); //后两行 st = new StringTokenizer(next()); String s3 = st.nextToken(); char[] chars3 = s3.toCharArray(); st = new StringTokenizer(next()); String s4 = st.nextToken(); char[] chars4 = s4.toCharArray(); int len2 = Math.min(chars3.length, chars4.length); //计算分钟 int m = selectIndex2(chars3, chars4, len2); StringBuilder mm = new StringBuilder(); mm = m < 10 ? mm.append("0").append(m) : mm.append(m); System.out.println(week + " " + hh + ":" + mm); } private static int selectIndex2(char[] chars3, char[] chars4, int len) { int in = -1; for (int i = 0; i < len; i++) { if (chars3[i] == chars4[i] && ('A' <= chars3[i] && chars3[i] <= 'Z'|| 'a' <= chars3[i] && chars3[i] <= 'z') ) return i; //返回第一个相同的数的下标 } return in; } private static Map<String, Integer> selectIndex(char[] chars1, char[] chars2, int len) { Map<String, Integer> map = new HashMap<>(); for (int i = 0; i < len; i++) { if (chars1[i] == chars2[i]) { if (chars1[i] - '0' < 10 && !map.containsKey("h1")){ map.put("h1", chars1[i] - '0'); //把第一个0-9的数存值 表示小时(没有n3时) } else if (chars1[i] - '0' < 31 && !map.containsKey("day")){ map.put("day", chars1[i] - '0' - A); //把第一个A-N的数存值 表示星期 }else if(chars1[i] - '0' < 31 && !map.containsKey("h2")){ map.put("h2", chars1[i] - '0' - A); //把第二个A-N的数存值 表示小时 } } } return map; } }