题目


解法1

点击查看代码
#include <iostream>
#include <vector>
#include <unordered_map>
#include <algorithm>
using namespace std;
// a=97,z=122;A=65,N=78,Z=90
int main() {
    vector<string> vs(4);
    for (int i = 0; i < 4; i++) {
        cin >> vs[i];
    }

    unordered_map<char, string> daymap = {
        {'A', "MON"}, {'B', "TUE"}, {'C', "WED"},
        {'D', "THU"}, {'E', "FRI"}, {'F', "SAT"}, {'G', "SUN"}
    };

    // Find Day
    string day;
    int i = 0, j = 0;
    while (i < vs[0].size() && j < vs[1].size()) {
        if (vs[0][i] == vs[1][j] && vs[0][i] >= 'A' && vs[0][i] <= 'G') {
            day = daymap[vs[0][i]];
            break;
        }
        i++;
        j++;
    }

    // Find Hour
    i++;
    j++;
    int hour = 0;
    while (i < vs[0].size() && j < vs[1].size()) {
        if (vs[0][i] == vs[1][j]) {
            if (vs[0][i] >= '0' && vs[0][i] <= '9') {
                hour = vs[0][i] - '0';
                break;
            } else if (vs[0][i] >= 'A' && vs[0][i] <= 'N') {
                hour = vs[0][i] - 'A' + 10;
                break;
            }
        }
        i++;
        j++;
    }

    // Find Minute
    int minute = 0;
    i = 0;
    j = 0;
    while (i < vs[2].size() && j < vs[3].size()) {
        if (vs[2][i] == vs[3][j] && isalpha(vs[2][i])) {
            minute = i;
            break;
        }
        i++;
        j++;
    }

    // Output
    cout << day << " ";
    if (hour < 10) {
        cout << "0";
    }
    cout << hour << ":";
    if (minute < 10) {
        cout << "0";
    }
    cout << minute << endl;

    return 0;
}
---

一些心得

感觉这题的难点在于读懂题目