题目
https://pintia.cn/problem-sets/994805342720868352/problems/994805411985604608
题意
这道题最难的就是理解题目的意思,我再次说一下我的理解:该题所要找的三个位置分别是前两个字符串中第一个相同的大写字母(A-G对应周一到周日),前两个字符串中第二个相同的大写字母或数字(数字0-9对应0-23小时中的0-9小时,字母A到N对应0-23小时中的10-23小时),后两个字符串中第一个相同的字母所对应的下标位置(下标从0开始,字母不区分大小写)
所有的比较都是按照下标一一对应比较
AC代码
#include<bits/stdc++.h>
using namespace std;
string s[7]={"MON","TUE","WED","THU","FRI","SAT","SUN"};
int main()
{
string s1,s2,s3,s4;
cin>>s1>>s2>>s3>>s4;
int l1=s1.size(),l2=s2.size(),l3=s3.size(),l4=s4.size();
int flag,num;
char c1,c2;
for(int i=0;i<min(l1,l2);i++)
{
if(s1[i]==s2[i]&&(s1[i]>='A'&&s1[i]<='G'))//注意比较的是G
{
c1=s1[i];
flag=i;
break;
}
}
for(int i=flag+1;i<min(l1,l2);i++)
{
if(s1[i]==s2[i]&&((s1[i]>='A'&&s1[i]<='N')||isdigit(s1[i])) )//注意比较的是N,相等时数字也可以
{
c2=s1[i];
break;
}
}
for(int i=0;i<min(l3,l4);i++)
{
if(s3[i]==s4[i]&&isalpha(s3[i]))//此处不分大小写
{
num=i;
break;
}
}
printf("%s %02d:%02d",s[c1-'A'].c_str(),isdigit(c2)?c2-'0':c2-'A'+10,num);
}