PAT甲级 1061 Dating (20分)

1061 Dating (20分)

题目链接:PAT A 1061
在这里插入图片描述
题目大意:给出四个字符串,要求在前两个字符串中确定DAY和HH,在后两个字符串中确定MM。
其中DAY是指前两个字符串中第一次出现相同大写字母的位置上的字母,这个字母将确定是星期几,如样例:
3 4 8 5 d j D k x h 4 h h G E
2 9 8 4 a k D f k k k k g g E d s b
第一个相同大写字母位置上的大写字母是D

HH是指前两个字符串中第二次出现相同字符(从第一次出现相同字母的位置之后开始遍历)的位置上的字符,其中0-9代表0-9,A-N代表10-23。
如样例:
3 4 8 5 d j D k x h 4 h h G E
2 9 8 4 a k D f k k k k g g E d s b
第二个相同字符位置上的字符是E

MM是指后两个字符串中第一次出现相同英文字母的位置(英文字母可以是大写也可以是小写)
如样例:
s & h g s f d k
d & H y s c v n m
第一次出现相同英文字母的位置是第四个位置:s

注意点:HH和MM都要输出两位,即如果不够两位要在首位补零。

AC代码:

#include<iostream>
using namespace std;
int main() {
	string a, b, c, d;
	char str[7][5] = {"MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"};
	cin >> a >> b >> c >> d;
	int i;
	for(i = 0; i < a.length() && i < b.length(); i++) {
		if(a[i] == b[i] && a[i] >= 'A' && a[i] <= 'G') { //确定DAY 
			cout << str[a[i] - 'A'] << " ";
			break; //一定要break 
		}
	}
	for(i = i + 1; i < a.length() && i < b.length(); i++) {
		if(a[i] == b[i] && ((a[i] >= 'A' && a[i] <= 'N') || (a[i] >= '0' && a[i] <= '9'))) { //确定HH 
			if(a[i] >= 'A' && a[i] <= 'N') //10-23
				cout << a[i] - 'A' + 10 << ":";
			else //0-9
				cout << "0" << a[i] - '0' << ":";
			break; //一定要break 
		}
	}
	for(i = 0; i < c.length() && i < d.length(); i++) {
		if(c[i] == d[i] && ((c[i] >= 'A' && c[i] <= 'Z') || (c[i] >= 'a' && c[i] <= 'z'))) { //确定MM 
			if(i >= 0 && i <= 9)
				cout << "0" << i;
			else
				cout << i;
		}
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值