1014 福尔摩斯的约会 (20分)/1061 Dating (20分)百分百解决你的测试点过不了!

题目描述就不多说了,直接上干货。

首先不得不说,这个题描述有那么一丢丢不全面,很多时候需要你自己去摸索真正的解题规则。

容易出错的地方:
①:一周只有7天,所以 第一个字符串要找第一对相同且大写的字母A~G
②:第二次寻找小时的时候,字母必须在A~N,或者数字在0-9范围
③:找分钟的时候,必须是字母且大小写有别

如果你都考虑到了以上内容,但是你还是不能AC,但是你跑测试案例还能过,那很有可能你只注意到了分钟控制%02d,但是小时没有控制

附AC代码:

#include
#include
#include
#include
using namespace std;
int main() {
	string s1, s2, s3, s4;
	string Week[7] = { "MON","TUE","WED","THU","FRI","SAT","SUN" };
	cin >> s1 >> s2 >> s3 >> s4;
	int hour, flag = 0;
	for (int i = 0; i < min(s1.length(), s2.length()); i++) {
		if (flag) { 
			if (((s1[i] >= '0'&&s1[i] <= '9') || (s1[i] >= 'A'&&s1[i] <= 'N')) && s1[i] == s2[i]) {
				isdigit(s1[i]) ? hour = s1[i] - '0' : hour = s1[i] - 'A' + 10;
				printf("%02d", hour); break;
			}
		}
		else if (s1[i] >= 'A'&&s1[i] <= 'G'&&s1[i]==s2[i]) {
			 flag = 1;
			 cout << Week[s1[i] - 'A'] << " ";
		}
	}
	for (int i = 0; i < min(s3.length(), s4.length()); i++) {
		if (isalpha(s3[i]) && s3[i] == s4[i])printf(":%02d",i);
	}
	return 0;
}

你可能感兴趣的:(PAT甲级)