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 }
代码已通过。
***********************************
愿 你 有 前 进 一 寸 的 勇 气 , 亦 有 后 退 一 尺 的 从 容 。
***********************************
***********************************
请尊重作者的劳动成果,转载请注明出处。
***********************************