浙大PAT甲级-1061

时间:2021-12-27 18:42:29

字符串处理

关键是理解题意:

(1)找出前两个字符串中第一个相同的大写字母(注意是逐个比较,即对应的位置相同),范围是‘A’ ~ ‘G’。
(2)找出前两个字符串中第二个相同的大写字母或者数字,范围是’A‘~'N' 或者 '0' ~ '9'。
(3)找出后两个字符串中第一个相同的字母(区不区别大小写好像都行),记录下其出现的位置。

#include <iostream>
#include <string>
#include <cstdio>
using namespace std;

int main()
{
string a,b,c,d;
int la,lb,lc,ld,i,j,M=0;
cin>>a>>b>>c>>d;
la=a.length();
lb=b.length();
lc=c.length();
ld=d.length();

char D=NULL,H=NULL;
for(i=0;i<la&&i<lb;i++){
if('A'<=a[i]&&a[i]<='G')
if(a[i]==b[i]){
D=a[i];
break;
}
if(D!=NULL)
break;
}
i++;
for(;i<la;i++){
if((a[i]>='0'&&a[i]<='9')||(a[i]>='A'&&a[i]<='N'))
if(a[i]==b[i]){
H=a[i];
break;
}
if(H!=NULL)
break;
}

for(i=0;i<lc&&i<ld;i++)
if(c[i]==d[i]&&((c[i]>='a'&&c[i]<='z')||(c[i]>='A'&&c[i]<='Z')))
{
M=i;
break;
}

switch(D){
case 'A':
cout<<"MON";
break;
case 'B':
cout<<"TUE";;
break;
case 'C':
cout<<"WED";
break;
case 'D':
cout<<"THU";
break;
case 'E':
cout<<"FRI";
break;
case 'F':
cout<<"SAT";
break;
case 'G':
cout<<"SUN";
break;
}
cout<<" ";
int h;
if(H>='A'&&H<='N')
h=H-'A'+10;
else if(H>='0'&&H<='9')
h=H-'0';
printf("%02d:%02d",h,M);
return 0;
}