PAT (Basic Level) Practise (中文) 1014. 福尔摩斯的约会 (20)

来源:互联网 发布:python socket select 编辑:程序博客网 时间:2024/06/03 22:56

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

时间限制
100 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue

大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧!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分
// 其实很不完善,第二个时间只能是A-N之间,否则第一个会出错
// 这个算法耦合度太高,效率太低,比赛把这个写出来基本很多时间就浪费了
// 题目基本都是补0输出的,注意这个
// 第一个思路由于控制循环跳出录两个数据,然后根据数据在StringBuffer后面追加数据拼接
// 由于第一第二位数据重复录入,第一位第二位都有分别的匹配规则 没能完成
// 第二个思路是先把前两位录入,先不根据字符追加,而是存起来最后用另一个StringBuffer追加
// ,然后再把最后一个数据拼接

/*
 * 注意的问题,第一第二位数据录入 12行 34行数据长短次序避免数组下标越界 补0输出
 */
/*
 *
 *
asdfDE
asddDE
addfdsa
asssss
THU 14:0005//最后一个匹配到一个就跳出
asdfD1
asdfD1
ssssddf
sssssdf
THU 01:00//这组没问题
asdfD99
asdfD99
sdfsdfsacv
xzvsdff
THU 09:03//第四组数据会测试第一第二行第二个数据0||9
*/
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class Main {  public static void main(String[] args) throws IOException {    BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));    char arr_str1[] = bf.readLine().toCharArray();    char arr_str2[] = bf.readLine().toCharArray();    char arr_str3[] = bf.readLine().toCharArray();    char arr_str4[] = bf.readLine().toCharArray();    StringBuffer sb = new StringBuffer();    StringBuffer sb2 = new StringBuffer();    int length1 = Math.min(arr_str1.length, arr_str2.length);    int length2 = Math.min(arr_str3.length, arr_str4.length);    String arr[]=new String[2];    int flag=0;    for (int i = 0; i < length1; i++) {      if (arr_str1[i] == arr_str2[i] && arr_str1[i] >= 'A'          && arr_str1[i] <= 'G' && flag==0) {        arr[0]=arr_str1[i]+"";        flag++;        continue;      }      if (arr_str1[i] == arr_str2[i] && arr_str1[i] >= 'A'          && arr_str1[i] <= 'N' && flag==1){                arr[1]=arr_str1[i]+"";        flag++;        continue;      }    }    for (int i = 0; i < arr.length; i++) {      sb.append(arr[i]);    }        char result[]=sb.toString().toCharArray();    switch (result[0]) {    case 'A':      sb2.append("MON");      break;    case 'B':      sb2.append("THE");      break;    case 'C':      sb2.append("WED");      break;    case 'D':      sb2.append("THU");      break;    case 'E':      sb2.append("FRI");      break;    case 'F':      sb2.append("SAT");      break;    case 'G':      sb.append("SUN");      break;    }    sb2.append(" ");    switch (result[1]) {    case '0':      sb2.append("00");      break;    case '1':      sb2.append("01");      break;    case '2':      sb2.append("02");      break;    case '3':      sb2.append("03");      break;    case '4':      sb2.append("04");      break;    case '5':      sb2.append("05");      break;    case '6':      sb2.append("06");      break;    case '7':      sb2.append("07");      break;    case '8':      sb2.append("08");      break;    case '9':      sb2.append("09");      break;    case 'A':      sb2.append("10");      break;    case 'B':      sb2.append("11");      break;    case 'C':      sb2.append("12");      break;    case 'D':      sb2.append("13");      break;    case 'E':      sb2.append("14");      break;    case 'F':      sb2.append("15");      break;    case 'G':      sb2.append("16");      break;    case 'H':      sb2.append("17");      break;    case 'I':      sb2.append("18");      break;    case 'J':      sb2.append("19");      break;    case 'K':      sb2.append("20");      break;    case 'L':      sb2.append("21");      break;    case 'M':      sb2.append("22");      break;    case 'N':      sb2.append("23");      break;    }    sb2.append(":");    for (int i = 0; i < length2; i++) {      if (arr_str3[i] == arr_str4[i]&&arr_str3[i]>='a'&&arr_str3[i]<='z') {        if (i >= 0 && i < 10) {          sb2.append("0" + (i));        } else {          sb2.append((i));        }      }    }    System.out.println(sb2);  }}

阅读全文
0 0
原创粉丝点击