首页 > 试题广场 >

福尔摩斯的约会 (20)

[编程题]福尔摩斯的约会 (20)
  • 热度指数:65672 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧! 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表示星期日。题目输入保证每个测试存在唯一解。
示例1

输入

3485djDkxh4hhGE
2984akDfkkkkggEdsb
s&hgsfdk
d&Hyscvnm

输出

THU 14:04
const readline = require("readline");

var Day = {
    A: "MON",
    B: "TUE",
    C: "WED",
    D: "THU",
    E: "FRI",
    F: "SAT",
    G: "SUN"
}
var Hours = {
    0: "00",
    1: "01",
    2: "02",
    3: "03",
    4: "04",
    5: "05",
    6: "06",
    7: "07",
    8: "08",
    9: "09",
    A: "10",
    B: "11",
    C: "12",
    D: "13",
    E: "14",
    F: "15",
    G: "16",
    H: "17",
    I: "18",
    J: "19",
    K: "20",
    L: "21",
    M: "22",
    N: "23"
};

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});
let count = 0;
let first_str = "";
let first_arr = [];
let second_str = "";
let second_arr = [];
let min_length = 0;
let Day_NUM;
let temp_arr = [];
let third_str = "";
let third_arr = "";
let forth_str = "";
let forth_arr = "";
let result = "";
rl.on("line",(line)=>{
    
    if(count == 0){
        first_str = line;
        first_arr = first_str.split("");
        
    } else if (count == 1){
        second_str = line;
        second_arr = second_str.split("");
        if(first_arr.length <= second_arr.length){
            min_length = first_arr.length;
        } else if(first_arr.length > second_arr.length){
            min_length = second_arr.length;
        }
        for(let i=0; i<min_length; i++){
            if(first_arr[i] === second_arr[i]){
                temp_arr.push(first_arr[i]);
            }
        }
        for(let i=0; i<temp_arr.length; i++){
            if(/^[A-G]$/.test(temp_arr[i])){
                Day_NUM = i;
                break;
            }
        }
        temp_arr = temp_arr.slice(Day_NUM);
        result = result + Day[temp_arr[0]] + " " + Hours[temp_arr[1]] + ":";
        
    } else if (count == 2){
        third_str = line;
        third_arr = third_str.split("");
    } else{
        forth_str = line;
        forth_arr = forth_str.split("");
        if(third_arr.length <= forth_arr.length){
            min_length_34 = third_arr.length;
        } else if(third_arr.length > forth_arr.length){
            min_length_34 = forth_arr.length;
        }
        for(let i=0; i<min_length_34; i++){
            if(third_arr[i] === forth_arr[i] && /^[a-zA-Z]$/.test(third_arr[i])){
                time_num = i;
                break;
            }
        }
        time_num<10 ? result+="0"+time_num : result+=time_num;
        console.log(result);
        rl.close();
    }
    count<4 && count++;
})

这里用JS尝试写了下,看了下别人的代码,感觉像我这么蠢地把小时对应的表一个个列出来的可能只有我吧= - =
发表于 2019-03-17 14:52:00 回复(0)