美文网首页
【PAT-乙级-C++】1014. 福尔摩斯的约会 (20)

【PAT-乙级-C++】1014. 福尔摩斯的约会 (20)

作者: linghugoogle | 来源:发表于2018-01-20 20:21 被阅读82次

    1014. 福尔摩斯的约会 (20)

    时间限制
    100 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    CHEN, Yue

    1、题目

    大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm”。大侦探很快就明白了,字条上奇怪的乱码实际上就是约会的时间“星期四 14:04”,因为前面两字符串中第1对相同的大写英文字母(大小写有区分)是第4个字母'D',代表星期四;第2对相同的字符是'E',那是第5个英文字母,代表一天里的第14个钟头(于是一天的0点到23点由数字0到9、以及大写字母A到N表示);后面两字符串第1对相同的英文字母's'出现在第4个位置(从0开始计数)上,代表第4分钟。现给定两对字符串,请帮助福尔摩斯解码得到约会的时间。

    输入格式:

    输入在4行中分别给出4个非空、不包含空格、且长度不超过60的字符串。

    输出格式:

    在一行中输出约会的时间,格式为“DAY HH:MM”,其中“DAY”是某星期的3字符缩写,即MON表示星期一,TUE表示星期二,WED表示星期三,THU表示星期四,FRI表示星期五,SAT表示星期六,SUN表示星期日。题目输入保证每个测试存在唯一解。

    输入样例:
    3485djDkxh4hhGE 
    2984akDfkkkkggEdsb 
    s&hgsfdk 
    d&Hyscvnm
    输出样例:
    THU 14:04
    

    2、代码

    //大小写字母判断题目没有说清楚,A~G、A~N也没有说清楚
    #include<iostream>
    #include<string>
    #include<iomanip>
    using namespace std;
    int main() {
        string s1, s2, s3, s4;
        cin >> s1 >> s2 >> s3 >> s4;
        string week[7] = { "MON","TUE","WED","THU","FRI","SAT","SUN" };
        string stmp;
        int i, j;
        int n, m;
        bool flag = false;  //对前两个字符串进行判断是否第一次发现相同字符
        n = s1.length() > s2.length() ? s2.length() : s1.length();
        m = s3.length() > s4.length() ? s4.length() : s3.length();
        //对前两个字符串进行判断
        for (i = 0;i < n;++i) {
            if (s1[i] == s2[i]) {
                //对星期进行判断
                if (flag == false) {
                    if (s1[i] >= 'A'&&s1[i] <= 'G') {
                        cout << week[s1[i] - 'A']<<" ";
                        flag = true;
                    }
                }
                //对小时进行判断
                else {
                    if (s1[i] >= '0'&&s1[i] <= '9') {
                        cout << "0" << s1[i] << ":";
                        break;
                    }
                    //小时在A~Z
                    else if (s1[i] >= 'A'&&s1[i] <= 'N') {
                        cout << s1[i] - 'A'+10 << ":";
                        break;
                    }
                }
            }
        }
        //对后两个字符串进行解析
        for (i = 0;i < m;++i) {
            if (s3[i] == s4[i]&&((s3[i] >= 'a'&&s3[i] <= 'z')||(s3[i] >= 'A'&&s3[i] <= 'Z'))) {
                cout<<setw(2)<<setfill('0')<<i;
            }
        }
        system("pause");
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:【PAT-乙级-C++】1014. 福尔摩斯的约会 (20)

          本文链接:https://www.haomeiwen.com/subject/btztaxtx.html