题目描述 大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm”。
大侦探很快就明白了,字条上奇怪的乱码实际上就是约会的时间“星期四 14:04”,
因为前面两字符串中第1对相同的大写英文字母(大小写有区分)是第4个字母'D',代表星期四;
第2对相同的字符是'E',那是第5个英文字母,代表一天里的第14个钟头(于是一天的0点到23点由数字0到9、以及大写字母A到N表示);
后面两字符串第1对相同的英文字母's'出现在第4个位置(从0开始计数)上,代表第4分钟。现给定两对字符串,请帮助福尔摩斯解码得到约会的时间。 输入描述: 输入在4行中分别给出4个非空、不包含空格、且长度不超过60的字符串。 输出描述: 在一行中输出约会的时间,格式为“DAY HH:MM”,其中“DAY”是某星期的3字符缩写,即MON表示星期一,TUE表示星期二,WED表示星期三,THU表示星期 四,FRI表示星期五,SAT表示星期六,SUN表示星期日。题目输入保证每个测试存在唯一解。 输入例子: 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm 输出例子: THU 14:04
题意:输入的四个字符串,前两个字符串是为了判断星期和小时(也就是前面两个字符串的两对字符相同),后面两对字符串就是判断分钟。
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String []args) throws IOException { BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));///字符流 String[] s= new String[4]; for(int i=0;i<4;i++) { s[i]=buffer.readLine();///会抛出错误。读取一行数据 } String str = "";///初始化 for(int i=0,flag=0;i<Math.min(s[0].length(), s[1].length());i++) {///前两对字符串,选出最短的一串 char zero = s[0].charAt(i); char one = s[1].charAt(i); if(flag==1&&zero==one) {///先判断时针就可以防止冲突 if(zero>='0'&&zero<='9') { str = str+"0"+zero+":"; break; } else if(zero>='A'&&zero<='Z') { int num = zero-'A'+10; str = str+Integer.toString(num)+":";///执行将int转换为String的操作 break; } } if(zero>='A'&&zero<='Z'&&one>='A'&&one<='Z') { if(zero==one) { flag=1; switch((zero-'A'+1)%7) { case 0: str+="SUN "; break; case 1: str+="MON "; break; case 2: str+="TUE "; break; case 3: str+="WED "; break; case 4: str+="THU "; break; case 5: str+="FRI "; break; case 6: str+="SAT "; break; } } } } for(int i=0;i<Math.min(s[2].length(), s[3].length());i++) { char two = s[2].charAt(i); char three = s[3].charAt(i); if(two>='A'&&two<='Z'&&three>='A'&&three<='Z'||two>='a'&&two<='z'&&three>='a'&&three<='z') { if(two==three) { i=i>60?i%60:i; if(i<10) { str=str+"0"+Integer.toString(i); break; } else { str=str+Integer.toString(i); break; } } } } System.out.println(str); } }