PAT_A1061
PAT甲级1061.
目录
A1061
题目
样例
输入:
3485djDkxh4hhGE
2984akDfkkkkggEdsb
s&hgsfdk
d&Hyscvnm
输出:
THU 14:04
思路和坑点
字符串处理,遍历一遍就行了。注意星期几的字母要求是大写的A-G,小时的字符是星期几之后遇到的共有的0~9,A-N(大写)范围的字符,分钟只要求相同字符的下标。
可以使用isdigit();isupper()
这样的函数简化判定。
AC代码
#include<bits/stdc++.h>
using namespace std;
int main(void){
#ifdef ONLINE_JUDGE
#else
freopen("1.txt","r",stdin);
#endif
string a,b,c,d;
string day[7]={"MON","TUE","WED","THU","FRI","SAT","SUN"};
cin>>a>>b>>c>>d;
int i,t,h,m;
for(i=0;i<a.size()&&i<b.size();i++){ //计算第几天
if(a[i]==b[i]&&a[i]>='A'&&a[i]<='G'){
t=a[i]-'A'; break;
}
}
for(i++;i<a.size()&&i<b.size();i++){ //计算第几小时
if(a[i]==b[i]){
if(isdigit(a[i])){ //如果是数字
h=a[i]-'0'; break;
}
else if(isupper(a[i])&&a[i]>='A'&&a[i]<='N'){//如果是A-N的字母
h=a[i]-'A'+10; break;
}
}
}
for(i=0;i<c.size()&&i<d.size();i++){ //计算分钟
if(c[i]==d[i]&&isalpha(c[i])){
m=i; break;
}
}
printf("%s %02d:%02d",day[t].c_str(),h,m); //按照格式输出
return 0;
}