PAT(上級レベル)実践1061でデート(20分)[文字列]

シャーロック・ホームズは、いくつかの奇妙な文字列でノートを受け取っ:Let's date! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnmこれは、これらの奇妙な文字列が実際にコード化された時間を参照していることを把握するために彼の唯一の分を取ったThursday 14:04-最初の二つの文字列によって共有される第1普通資本英字(大文字と小文字を区別)ため、第四大文字であるDAで4日目を表します、週間; 第2の共通の文字が5大文字でE14時間を表す(したがって日中0から23時間が0から9までの数字で表されるとから大文字されるAまでN、それぞれ)。最後の2つの文字列で共有英語の文字があるs第四分を表す、4位に。さて、文字列の2組を与え、あなたはシャーロックがデートの時間をデコード助けることになっています。

入力仕様:

各入力ファイルには、1つのテストケースが含まれています。各ケースは4行で空白なしなし以上60文字以下の4つの非空の文字列を与えます。

出力仕様:

各テストケースの場合は、形式で、1行でデコード時間を印刷しDAY HH:MMDAYは、週の日のための3文字の略語です-で、MON月曜日、TUE火曜日、WED水曜日のため、THU木曜日、FRI金曜日、SAT土曜日のため、そしてSUN日曜日。結果は各ケースに対して一意であることが保証されています。

サンプル入力:

3485djDkxh4hhGE 
2984akDfkkkkggEdsb 
s&hgsfdk 
d&Hyscvnm

サンプル出力:

THU 14:04

問題の意味

⾯同じズーム⺟(ズーム⼩書き込ま区別)についての最初の書き込み英語のテキストの前に2つの文字列は、最初の4つの文字⺟D、木曜日の代表であり、第二の文字のための同じことがEである、第五のイングランドであります⾯最初の単語⺟sの英国のファイルは二つの文字列で同じように表示された後、(夜11時まで午後12時の1日で、9の数字0で表され、書き込み⺟Nにズームされる)代表14⺟についてのテキスト第4の位置(0から数えて)最初の4分の代表です。文字列の2組を考えると、今予定のデコード時間を得るために必要とされています。

コード

#include <cstdio>
#include <cstring>
#include <iostream>

using namespace std;

int main() {
    char week[7][5] = {
        "MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"};

    char str1[70], str2[70], str3[70], str4[70];

    cin.getline(str1, 70);
    cin.getline(str2, 70);
    cin.getline(str3, 70);
    cin.getline(str4, 70);

    int len1 = strlen(str1);
    int len2 = strlen(str2);
    int len3 = strlen(str3);
    int len4 = strlen(str4);

    int i;

    // 寻找str1和str2中第一对相同位置的A~G的大写字母
    for (i = 0; i < len1 and i < len2; ++i) {
        if (str1[i] == str2[i] and str1[i] >= 'A' and str1[i] <= 'G') {
            printf("%s ", week[str1[i] - 'A']);
            break;
        }
    }

    // 在上面的基础上,往后寻找相同位置的0~9或A~N的字符
    for (i++; i < len1 and i < len2; ++i) {
        if (str1[i] == str2[i]) {
            if (str1[i] >= '0' and str1[i] <= '9') {
                printf("%02d:", str1[i] - '0'); // 输出0~9
                break;
            } else if (str1[i] >= 'A' and str1[i] <= 'N') {
                printf("%02d:", str1[i] - 'A' + 10); // 输出10~23
                break;
            }
        }
    }

    // 寻找str3和str4中第一对相同位置的A~Z或a~z的英文字符
    for (i = 0; i < len3 and i < len4; ++i) {
        if (str3[i] == str4[i]) {
            if ((str3[i] >= 'A' and str3[i] <= 'Z') || (str3[i] >= 'a' and str3[i] <= 'z')) {
                printf("%02d", i);  // 注意输出格式
                break;
            }
        }
    }
}
发布了184 篇原创文章 · 获赞 19 · 访问量 2万+

おすすめ

転載: blog.csdn.net/Exupery_/article/details/104171255