#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <string>
#include <sstream>
#include <cctype>
using namespace std;
string days[7]={"MON","TUE","WED","THU","FRI","SAT","SUN"};
int main() {
bool counter=false;
int tempr = 0;
string s1,s2,s3,s4;
cin>>s1>>s2>>s3>>s4;
for(int i=0;i<s1.size();i++){
if(isdigit(s1[i])||isalpha(s1[i]))){
if(s1[i]==s2[i]){
int t = s1[i]-'A';
int h = s1[i]-'0';
if(!counter){
if(t<=6&&t>=0){
cout<<days[t]<<" ";
counter=true;
}
}else{
if(t>=0&&t<=13){
printf("%02d:",9+t+1);
break;
}else if(h>=0&&h<=9){
printf("%02d:",h);
break;
}
}
}
}
}
int len = min(s3.size(),s4.size());
for(int i=0;i<len;i++){
if(s3[i]==s4[i]){
if(isdigit(s3[i])||isalpha(s3[i])){
printf("%02d",i);
break;
}
}
}
return 0;
}
柳神代码:
#include <iostream>
#include <cctype>
using namespace std;
int main() {
string a, b, c, d;
cin >> a >> b >> c >> d;
char t[2];
int pos, i = 0, j = 0;
while(i < a.length() && i < b.length()) {
if (a[i] == b[i] && (a[i] >= 'A' && a[i] <= 'G')) {
t[0] = a[i];
break;
}
i++;
}
i = i + 1;
while (i < a.length() && i < b.length()) {
if (a[i] == b[i] && ((a[i] >= 'A' && a[i] <= 'N') || isdigit(a[i]))) {
t[1] = a[i];
break;
}
i++;
}
while (j < c.length() && j < d.length()) {
if (c[j] == d[j] && isalpha(c[j])) {
pos = j;
break;
}
j++;
}
string week[7] = {"MON ", "TUE ", "WED ", "THU ", "FRI ", "SAT ", "SUN "};
int m = isdigit(t[1]) ? t[1] - '0' : t[1] - 'A' + 10;
cout << week[t[0]-'A'];
printf("%02d:%02d", m, pos);
return 0;
}
总结:题意要理解好,一开始想太麻烦了,结果第一和二字符的位置也是对应的。。。。题目没明说。。。我感觉是题目出的不够严谨