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

题目链接

  1. 第一对出现的相同的大写字母代表的星期,官方给的输入不应该保证第一个相同的大写字母在A~G之间吗?
  2. 第二对相同的字符代表小时,这里的二是指上面相同的大写字母后面,而不是从头开始计算。官方这个有没有说是相同的大写字母,但是题目就默认成了大写字母。
  3. 第一对出现相同字母的位置代表分钟。
  4. 感觉官方就是在他娘的和我玩文字游戏。

C++代码

#include <iostream>
#include<string>
#include<vector> 
#include<math.h>
#include <algorithm>
using namespace std;
int main() {
	char a, b;
	int c;
	int i = 0;
	//string s1="3485djDkxh4hhGE", s2="2984akDfkkkkggEdsb", s3="s&hgsfdk", s4="d&Hyscvnm";
	string s1, s2, s3, s4;
	cin >> s1 >> s2 >> s3 >> s4;
	string date[7] = { "MON","TUE","WED","THU","FRI","SAT","SUN" };
	int m = min(s1.size(), s2.size());
	//查找第一个相同的A~G的大写字母
	while (i < m) {
		if (s1[i] == s2[i] && (s1[i] >= 'A'&&s1[i] <= 'G')) {
			a = s1[i];
			break;
		}
		i++;
	}
	i++;
	//查找第二个相同的字母或是数字
	while (i < m) {
		if (s1[i] == s2[i] && ((s1[i] >= 'A'&&s1[i] <= 'N') || isdigit(s1[i]))) {
			b = s1[i];
			break;
		}
		i++;
	}

	//查找第一个出现的相同字母的位置
	m = min(s3.size(), s4.size());
	for (int j = 0; j < m; j++) {
		if (s3[j] == s4[j] && isalpha(s3[j])) { // s3写成了s1找了好久,卧槽
			c = j;		//第一个相同的字母出现的位置
			break;
		}
	}
	cout << date[a - 'A'] << " ";//输出星期

	int hour = 0;
	if (isdigit(b)) {
		hour = b - '0';
	}
	else {
		hour = b - 'A' + 10;
	}
	printf("%02d:", hour);
	printf("%02d", c);
	return 0;
}
复制代码

python3 代码


def main():
    a = input()
    b = input()
    c = input()
    d = input()
    date = {'A':'MON','B':'TUE','C':'WED','D':'THU','E':'FRI','F':'SAT','G':'SUN'}

    hour = {'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'}

    # 找出第一个结果
    res  = []
    local = 0
    for i in range(len(a)):
        if(a[i]==b[i] and  a[i] in date.keys()):
            res.append(a[i])
            local = i
            break

    # 查找第二个结果
    for i in range(local+1,len(a)):
        if(a[i] == b[i] and a[i] in hour.keys()):
            res.append(a[i])
            break
    # 查找第三个结果
    for i,ch in enumerate(c):
        if(ch == d[i] and ch.isalpha()):
            res.append(i)
    print("%s %s:%02d" % (date[res[0]],hour[res[1]],res[2]))

main()
复制代码

转载于:https://juejin.im/post/5ce69d08518825332d13c444

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值