PAT A1061 Dating
思路:直接进行题目需要的模拟,但是注意判断字母的范围,第一次为 A ~ G,第二次为 A ~ N,第三次则需考虑全部小写字母和大写字母。
#include<iostream>
#include<algorithm>
#include<string>
#include<cstdio>
using namespace std;
string s1, s2, s3, s4;
string weekday[7] = {"MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"};
bool isNeedCapital(char ch, int op) {
if(op == 0) return ch >= 'A' && ch <= 'G';
else if(op == 1) return ch >= 'A' && ch <= 'N';
else if(op == 2) return (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z');
return ch >= '0' && ch <= '9';
}
int main() {
cin >> s1 >> s2 >> s3 >> s4;
int len1 = s1.size(), len2 = s2.size();
int len3 = s3.size(), len4 = s4.size();
int i;
for(i = 0; i < len1 && i < len2; i++) {
if(isNeedCapital(s1[i], 0) && s1[i] == s2[i]) {
cout << weekday[s1[i] - 'A'] << " ";
break;
}
}
for(i = i + 1; i < len1 && i < len2; i++) {
if(s1[i] == s2[i]) {
if(isNeedCapital(s1[i], 1)) {
printf("%02d:", s1[i] - 'A' + 10);
break;
} else if(isNeedCapital(s1[i], 3)) {
printf("%02d:", s1[i] - '0');
break;
}
}
}
for(i = 0; i < len3 && i < len4; i++) {
if(isNeedCapital(s3[i], 2) && s3[i] == s4[i]) {
printf("%02d", i);
break;
}
}
return 0;
}