PAT (Basic Level) Practice (中文)1014 福尔摩斯的约会 (20 分)

在这里插入图片描述
本题是对字符串的匹配,然后感觉有些繁琐,所以直接找的代码跟着打了一遍,感觉别人的思路很清晰,一步一步的,值得学习

#include<iostream>
#include<string>
using namespace std;
int main() {
 string a, b, c, d;
 int flag = 0;
 string week[7] = { "MON","TUE","WED","THU","FRI","SAT","SUN" };
 cin >> a >> b >> c >> d;
 int len1 = a.length() > b.length() ? b.length() : a.length();
 //寻找第一个相同的大写字母,因为对应的是星期几,所以只找前七个即可
 for (int i = 0; i < len1; i++) {
  if (a[i] == b[i] && (a[i] >= 65 && a[i] <= 71) && flag == 0) {
   flag = 1;
   cout << week[a[i] - 65] << " ";
   i++;
  }
  //从第一对相同大写字母后找第二对相同的字符(在0-9和A-N之间)
  if (flag == 1 && a[i] == b[i]) {
   if (a[i] >= '0'&&a[i] <= '9') {
    cout << "0" << a[i] - '0' << ":";
    break;
   }
   if (a[i] >= 'A'&&a[i] <= 'N') {
    cout << a[i] - 65 + 10 << ":";
    break;
   }
  }
 }
 int len2 = c.length() > d.length() ? d.length() : c.length();
 //后两个字符串必须满足是两个英文字母相等
 for (int i = 0; i < len2; i++) {
  if (c[i] == d[i] && ((c[i] >= 65 && c[i] <= 90) || (c[i] >= 97 && c[i] <= 122))) {
   if (i <= 9) {//不足两位数补0
    cout << "0" << i << endl;
    break;
   }
   else {
    cout << i << endl;
    break;
   }
  }
 }
 return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值