PAT 1014 福尔摩斯的约会

https://pintia.cn/problem-set...
这个题目第1、2个用例总是过不了,大佬们能帮忙看看哪里错了吗?

#include <iostream>
#include <string>

using namespace std;
string s1, s2, s3, s4;
string day[] = {"MON","TUE","WED","THU","FRI","SAT","SUN"};

int main()
{
    cin >> s1 >> s2 >> s3 >> s4;

    int i;
    for(i = 0; i < min(s1.size(), s2.size()); i++){
        if(s1[i] == s2[i] && isupper(s1[i]) && s1[i] <= 'G'){
            cout << day[s1[i] - 'A'] << " ";
            break;
        }
    }

    i++;
    for(; i < min(s1.size(), s2.size()); i++){
        if(s1[i] == s2[i]){
            if(s1[i] >= 'A' && s1[i] <= 'N')
                cout << 10 + s1[i] - 'A' << ":";
            else if(isdigit(s1[i]))
                cout << '0' << s1[i] << ":";
            break;
        }
    }

    for(i = 0; i < min(s3.size(), s4.size()); i++){
        if(s3[i] == s4[i] && isalpha(s3[i])){
            if(i < 10)
                cout << '0' << i << endl;
            else
                cout << i << endl;
            break;
        }
    }

    return 0;
}
阅读 2.7k
1 个回答

第二个 for 循环不对:

    for(; i < min(s1.size(), s2.size()); i++){
        if(s1[i] == s2[i]){
            if(s1[i] >= 'A' && s1[i] <= 'N')
                cout << 10 + s1[i] - 'A' << ":";
            else if(isdigit(s1[i]))
                cout << '0' << s1[i] << ":";
            // 此处别的情况呢?如果匹配了不是数字也不是 A~N 的字母,循环仍要继续
            break;
        }
    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题