Day016 PAT乙级 1014 福尔摩斯的约会

PAT乙级 1014 福尔摩斯的约会

题目

分析

  1. 要输出日期,小时,分钟三个数字,根据第一二个字符串得出日期和小时,根据第三四个字符串可以得出分钟
  2. 第一二个字符串中,第一对相同的大写英文字母决定日期,A~G分别代表星期一到星期日
  3. 第一二个字符串中,第二对相同的大写英文字母或者数字决定小时,0点到9点用数字表示,10点到23点用A~N表示
  4. 第三四个字符串中,第一对相同的英文字母决定分钟,第几个位置的数相同,则表示是第几分钟,从0开始计算
  5. 找出符合条件的字母或数字,转换成时间后输出,小时和分钟若小于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();
    }
}
原文地址:https://www.cnblogs.com/mooncell/p/14832526.html