1014. 福尔摩斯的约会 (20)
有两个测试点一直运行超时,并且这道题的输出太恶心啦啦啦~
【代码】
#include <stdio.h> #include <ctype.h> #include <string.h> int main() { char str1[60],str2[60],str3[60],str4[60]; int i,j; char *week[7] = {"MON","TUE","WED","THU","FRI","SAT","SUN"}; //使用指针 scanf("%s %s %s %s",str1,str2,str3,str4); for(i=0;i<strlen(str1)&&i<strlen(str2);i++){ if(str1[i]==str2[i] && (str1[i]>='A' && str1[i]<='G') ){ printf("%s",week[str1[i]-'A']); break; } } for(j=i+1;j<strlen(str1)&&j<strlen(str2);j++){ if(str1[j]==str2[j]){ //超时的点在这里,while语句会导致死循环 if(str1[j]>='0' && str1[j]<='9'){ printf(" %02d",str1[j]-'0'); //将字符型转为整形 break; } if(str1[j]>='A' && str1[j]<='N') { printf(" %02d",str1[j] - 'A' +10); break; } } } for(i=0;i<strlen(str3)&&i<strlen(str4);i++){ if(str3[i]==str4[i]&&isalpha(str3[i])){ //判断字母时要加上头文件ctype.h printf(":%02d",i); break; } } return 0; }