【PAT】B1014. 福尔摩斯的约会(题目理解,输出格式)

【PAT】B1014. 福尔摩斯的约会(题目理解,输出格式)

@(PAT)

链接:https://www.patest.cn/contests/pat-b-practise/1014

思路:
这道题目不难,就是题目的意思非常含糊,这也许是PAT的一个不足之处,另外一个不足之处我觉得是输出的格式调整,也是PAT题目的一个坑点。
这道题目的意思是,前面两个字符串,比较相应位置的char,第1对相同的大写英文字母(大小写有区分)表示星期几,第2对相同的字符(必须是’0’~’9’|| ‘A’~’N’)表示小时;后面两个字符串,比较相应位置的char,第1对相同的英文字母出现的位置表示为分钟。
需要注意的地方:
1. 判断是否是字母除了常规判断外,能够使用头文件下的isalpha函数。
2. 输出小时和分钟如果是个位数,需要在前面补0,使用printf(%02d, a)可以控制。
3. 题目意思要理解清楚再下手,别浪费无谓的时间。

My AC code:

#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
#include <string>
#include <sstream>
#include <cctype>

using namespace std;

int main() {
    string weekdays[7]= {"MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"};
    string s1, s2, s3, s4;
    // s1= "3485djDkxh4hhGE";
    // s2= "2984akDfkkkkggEdsb";
    // s3= "s&hgsfdk";
    // s4= "d&Hyscvnm";
    cin>> s1>> s2>> s3>> s4;
    int min_size= s1.size()> s2.size()?s2.size():s1.size();
    vector<char> same;
    for (int i= 0; i< min_size; i++) {
        if (same.size()== 0&& s1[i]== s2[i]&& (s1[i]>= 'A'&& s1[i]<= 'G')) {
            same.push_back(s1[i]);
        } else if (same.size()!= 0&& s1[i]== s2[i]&& (s1[i]>= 'A'&& s1[i]<= 'N'|| s1[i]>= '0'&& s1[i]<= '9')) {
            same.push_back(s1[i]);
        }
    }
    int index= same[0]- 'A';
    cout<< weekdays[index]<< " ";
    char hour= same[1];
    int hh;
    if (isalpha(hour)) {
        hh= hour- 'A'+ 10;
    } else {
        hh= hour- '0';
    }
    int min_size2= s3.size()> s4.size()?s4.size():s3.size();
    int mm;
    for (int i= 0; i< min_size2; i++) {
        if (s3[i]== s4[i]&& isalpha(s3[i])) {
            mm= i;
        }
    }
    printf("%02d:%02d\n", hh, mm);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值