1014. 福尔摩斯的约会 (20)


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;
}