- 因为前面两字符串中第 1 对相同的大写英文字母(大小写有区分)是第 4 个字母D,代表星期四;
- 第 2 对相同的字符是 E ,那是第 5 个英文字母,代表一天里的第 14 个钟头(于是一天的 0 点到 23 点由数字 0 到 9、以及大写字母 A 到 N 表示);
- 后面两字符串第 1 对相同的英文字母 s 出现在第 4 个位置(从 0 开始计数)上,代表第 4分钟。
实现:(仔细推一下样例,有坑)
用四个字符串储存输入,
从头遍历前两个字符串,确定星期和小时(用字符串数组储存星期,方便了输出,可千万别用ifelse或者switch,太low)
从头遍历后两个字符,确定分钟
#include<cstdio>
using namespace std;
int main(){
int minum=0;
char week='Z',hour='Z';
char arr1[61],arr2[61],arr3[61],arr4[61];
scanf("%s %s %s %s",arr1,arr2,arr3,arr4);
for(int i=0;i<60;i++){
if(arr1[i]==arr2[i])
if(week=='Z'&&arr2[i]>='A'&&arr2[i]<='G') {week=arr1[i];continue;}
if(arr1[i]==arr2[i]&&week!='Z'&&hour=='Z'&&((arr1[i]>='A'&&arr1[i]<='N')||(arr1[i]>='0'&&arr1[i]<='9'))) hour=arr1[i];
}
for(int i=0;i<60;i++){
if(arr4[i]>='a'&&arr4[i]<='z'&&arr3[i]==arr4[i]&&minum==0)
minum=i;
}
char wek[7][4]={{"MON"},{"TUE"},{"WED"},{"THU"},{"FRI"},{"SAT"},{"SUN"}};
printf("%s ",wek[(int)week-'A']);
if(hour>='0'&&hour<='9')printf("%02d:",(int)hour-'0');
else printf("%02d:",10+hour-'A');
printf("%02d",minum);
return 0;
}