• 1014 福尔摩斯的约会(C#)


    一、题目内容:

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

     

    二、编程思路:

    1.第一对是相同的大写字母(字符相等且必须是大写字母,并且在A-G之间)——星期

    2.第二对是相同的字符(字符相等且必须是在0-9或A-N,该字符一定在第一个字符之后)——小时

    3.第三对是相同的英文字母(字符相等且必须是字母,且结果是相同字母的序号)——分钟

     

    三、代码如下:

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Diagnostics;
     4 using System.Linq;
     5 using System.Text;
     6 using System.Text.RegularExpressions;
     7 using System.Threading.Tasks;
     8 
     9 namespace ConsoleApp1
    10 {
    11     class Program
    12     {
    13         static void Main(string[] args)
    14         {
    15             string line;
    16             while ((line = Console.ReadLine()) != null)
    17             {
    18                 string str1 = line;
    19                 string str2 = Console.ReadLine();
    20                 string str3 = Console.ReadLine();
    21                 string str4 = Console.ReadLine();
    22 
    23                 int length = Math.Min(str1.Length, str2.Length);
    24                 char first = ' ', second = ' ';
    25                 int third = 0;
    26                 for (int i = 0; i < length; i++)
    27                 {
    28                     // 第一对相同的大写字母(字符相等且必须是大写字母,并且在A-G之间)--星期
    29                     // 第二对相同的字符(字符相等且必须是在0-9或A-N,该字符一定在第一个字符之后)--小时
    30                     if (str1[i] == str2[i])
    31                     {
    32                         if (first != ' ' && ((str1[i] >= 'A' && str1[i] <= 'N') || (str1[i] >= '0' && str1[i] <= '9')))
    33                         {
    34                             second = str1[i];
    35                             break;
    36                         }
    37                         if (first == ' ' && str1[i] >= 'A' && str1[i] <= 'G')
    38                         {
    39                             first = str1[i];
    40                         }
    41                     }
    42                 }
    43                 int length2 = Math.Min(str3.Length, str4.Length);
    44                 for (int i = 0; i < length2; i++)
    45                 {
    46                     // 第三对相同的英文字母(字符相等且必须是字母)
    47                     if (str3[i] == str4[i] && ((str3[i] >= 'A' && str3[i] <= 'Z') || (str3[i] >= 'a' && str3[i] <= 'z')))
    48                     {
    49                         third = i;
    50                         break;
    51                     }
    52                 }
    53                 string result = "";
    54                 switch (first)
    55                 {
    56                     case 'A': result += "MON"; break;
    57                     case 'B': result += "TUE"; break;
    58                     case 'C': result += "WED"; break;
    59                     case 'D': result += "THU"; break;
    60                     case 'E': result += "FRI"; break;
    61                     case 'F': result += "SAT"; break;
    62                     case 'G': result += "SUN"; break;
    63                     default: break;
    64                 }
    65                 result += " ";
    66 
    67                 if (second >= '0' && second <= '9')
    68                 {
    69                     result += second.ToString().PadLeft(2, '0');
    70                 }
    71                 else
    72                 {
    73                     result += (second - 'A') + 10;
    74                 }
    75                 result += ":" + third.ToString().PadLeft(2, '0');
    76                 Console.WriteLine(result);
    77             }
    78             Console.ReadKey();
    79         }
    80     }
    81 }
    View Code

    代码已通过。

  • 相关阅读:
    关于树状数组区间最值
    Gym 100500B
    RQNOJ Bus
    关于加权的LIS问题
    vs tip1
    小常识
    我的魔方主力
    killer驱动
    从日升的mecha anime看mecha genre的衰退
    关于供给移动端的视频压制
  • 原文地址:https://www.cnblogs.com/bossing/p/11098150.html
Copyright © 2020-2023  润新知