PAT——Dating(详细讲解题目的意思和要求)

题目

https://pintia.cn/problem-sets/994805342720868352/problems/994805411985604608

题意

这道题最难的就是理解题目的意思,我再次说一下我的理解:该题所要找的三个位置分别是前两个字符串中第一个相同的大写字母(A-G对应周一到周日),前两个字符串中第二个相同的大写字母或数字(数字0-9对应0-23小时中的0-9小时,字母A到N对应0-23小时中的10-23小时),后两个字符串中第一个相同的字母所对应的下标位置(下标从0开始,字母不区分大小写)

所有的比较都是按照下标一一对应比较

AC代码

#include<bits/stdc++.h>
using namespace std;
string s[7]={"MON","TUE","WED","THU","FRI","SAT","SUN"};
int main()
{
	string s1,s2,s3,s4;
	cin>>s1>>s2>>s3>>s4;
	int l1=s1.size(),l2=s2.size(),l3=s3.size(),l4=s4.size();
	int flag,num;
	char c1,c2;
	for(int i=0;i<min(l1,l2);i++)
	{
		if(s1[i]==s2[i]&&(s1[i]>='A'&&s1[i]<='G'))//注意比较的是G 
		{
			c1=s1[i];
			flag=i;
			break;
		}
	}
	for(int i=flag+1;i<min(l1,l2);i++)
	{
		if(s1[i]==s2[i]&&((s1[i]>='A'&&s1[i]<='N')||isdigit(s1[i])) )//注意比较的是N,相等时数字也可以 
		{
			c2=s1[i];
			break;
		}
	}
	for(int i=0;i<min(l3,l4);i++)
	{
		if(s3[i]==s4[i]&&isalpha(s3[i]))//此处不分大小写 
		{
			num=i;
			break;
		}
	}
	printf("%s %02d:%02d",s[c1-'A'].c_str(),isdigit(c2)?c2-'0':c2-'A'+10,num);
}

参考

pat 甲级 1061 Dating

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值