牛客網PAT乙級第四題,福爾摩斯的約會,題目描述大致如下:
輸入四行,每行非空,不包括空格,長度不超過60的字符串。
前面兩個字符串,比如第一對相同的大寫字母(區分大小寫)是第4個英文字母'D',代表週四,第二個相同的字符是'E',代表一天中的14點(一天24h表示爲0-9,A-N),後面兩個字符串第一對相同的英文字母's'出現在第4個位置(從0開始技術)上,代表第4分鐘。
輸出"DAY HH:MM"
題目要求的輸入輸出如下:
實際程序的運行結果如下:
代碼如下:
#include <iostream>
#include <string>
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;
}