1014. 福尔摩斯的约会 (20) JAVA

时间:2022-07-19 11:30:21

大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧! 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

注意:给出两份源码,第一份是自己写的,得了12分,第二份是参考了@柳婼女神的

代码1:

import java.util.ArrayList;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;


public class Main {
public static void main(String[] args) {
Map<Character,String> map =new HashMap<>();
map.put('A', "MON");
map.put('B', "TUE");
map.put('C', "WED");
map.put('D', "THU");
map.put('E', "FRI");
map.put('F', "SAT");
map.put('G', "SUN");

Map<Character,String> map2 = new HashMap<>();
map2.put('A', "10");
map2.put('B', "11");
map2.put('C', "12");
map2.put('D', "13");
map2.put('E', "14");
map2.put('F', "15");
map2.put('G', "16");
map2.put('H', "17");
map2.put('I', "18");
map2.put('J', "19");
map2.put('K', "20");
map2.put('L', "21");
map2.put('M', "22");
map2.put('N', "23");

String a1 = null,a2=null,a3=null,a4=null;
int flag=0;
List<Character> s1 = new  ArrayList<>();
List<Character> s2 = new ArrayList<>();
Scanner in = new  Scanner(System.in);
a1=in.next();
a2=in.next();
a3=in.next();
a4=in.next();



for(int i=0;i<a1.length();i++)
{
Character  c=a1.charAt(i);
if(c.isUpperCase(c))
{
  s1.add(c);
}
}
for(int i=0;i<a2.length();i++)
{
Character c =a2.charAt(i);
if(c.isUpperCase(c))
{
s2.add(c);
}

}



  for(int i=0;i<s1.size();i++)
{
for(int j=0;j<s2.size();j++)
{
if(s1.get(i).equals(s2.get(j)) && flag==0)
{
System.out.print(map.get(s1.get(i))+" ");
flag=1;
break;
}
if(s1.get(i).equals(s2.get(j)) && flag==1)
{
System.out.print(map2.get(s1.get(i))+":");
flag=2;
break;
}
}
}
int len1=a3.length();
int len2=a4.length();
if(len1>=len2)
{
for(int i=0;i<a3.length();i++)
{
Character c=a3.charAt(i);
if(c.isLetter(c)|| c.isUpperCase(c))
{
if(c==a4.charAt(i) && i<10) 
{
System.out.print("0"+i);
break;
}
else if(c==a4.charAt(i) && i>=10) {
System.out.print(i);
break;
}
}
}
}else {
for(int i=0;i<a4.length();i++)
{
Character c=a4.charAt(i);
if(c.isLetter(c) || c.isUpperCase(c))
{
if(c.equals(a3.charAt(i)) && i<10) 
{
System.out.print("0"+i);
break;
}
else if(c.equals(a3.charAt(i)) && i>=10) {
System.out.print(i);
break;

}
}
}
}
}

}


代码2:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;


public class Main {
public static void main(String[] args) {
String a1 = null,a2=null,a3=null,a4=null;
Scanner in = new  Scanner(System.in);
a1=in.next();
a2=in.next();
a3=in.next();
a4=in.next();


boolean isDay=false;
boolean isHour=false;

for(int i=0; i<a1.length()&&i<a2.length(); i++)
{
if(a1.charAt(i) == a2.charAt(i))
{
if(((a1.charAt(i)>='A' && a1.charAt(i)<='N') || Character.isDigit(a1.charAt(i))) && !isHour && isDay)
{
isHour=true;
if(a1.charAt(i)>='0' && a1.charAt(i) <='9') 
{
System.out.print("0"+a1.charAt(i));

}else {

System.out.print(a1.charAt(i)-'A'+10);

}
}
if(a1.charAt(i)>='A' && a1.charAt(i) <='G' && !isDay)
{
isDay=true;
char c = a1.charAt(i);
switch (c) {
case 'A':System.out.print("MON "); break;
case 'B':System.out.print("TUE "); break;
case 'C':System.out.print("WED "); break;
case 'D':System.out.print("THU "); break;
case 'E':System.out.print("FRI "); break;
case 'F':System.out.print("SAT "); break;
case 'G':System.out.print("SUN ");  break;

}
}
}
}

for(int i=0; i<a3.length()&&i<a4.length(); i++)
{
if(a3.charAt(i)== a4.charAt(i) && (Character.isUpperCase(a3.charAt(i)) || Character.isLowerCase(a3.charAt(i))))
{
System.out.printf(":%02d",i);
}
}
}
}