牛客网PAT乙级第四题,福尔摩斯的约会,题目描述大致如下:
输入四行,每行非空,不包括空格,长度不超过60的字符串。
前面两个字符串,比如第一对相同的大写字母(区分大小写)是第4个英文字母'D',代表周四,第二个相同的字符是'E',代表一天中的14点(一天24h表示为0-9,A-N),后面两个字符串第一对相同的英文字母's'出现在第4个位置(从0开始技术)上,代表第4分钟。
输出"DAY HH:MM"
题目要求的输入输出如下:
实际程序的运行结果如下:
代码如下:
#include
#include
using namespace std;
int main()
{
string s1, s2, s3, s4;
string week[7] = { "MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN" };
while (cin >> s1 >> s2 >> s3 >> s4)
{
int flag = 0;
int len = s1.length() > s2.length() ? s2.length() : s1.length();
for (int i = 0; i <= len; i++)
{
if (s1[i] == s2[i] && s1[i] >= 'A' && s1[i] <= 'G')
{
int m = s1[i] - 'A' + 10;
cout << week[m%10] << ' ';
flag = i;
break;
}
}
for (int j = flag + 1; j <= len; j++)
{
if (s1[j] == s2[j] && (s1[j] >= 'A' && s1[j] <= 'N' || s1[j]>='0' && s1[j] <= '9'))
{
if (s1[j] >= 'A' && s1[j] <= 'N')
{
int x = s1[j] - 'A' + 10;
cout << x / 10 << x % 10 << ":";
}
else
{
int y = s1[j] - '0';
cout << y / 10 << y % 10 << ":";
}
break;
}
}
len = s3.length() > s4.length() ? s4.length() : s3.length();
for (int k = 0; k <= len; k++)
{
if (s3[k] == s4[k] && (s3[k] >= 'A' && s3[k] <= 'Z' || s3[k]>='a' && s3[k] <= 'z'))
{
cout << k / 10 << k % 10;
break;
}
}
}
return 0;
}