題目鏈接:http://zju.acmclub.com/index.php?app=problem_title&id=1&problem_id=21375
題目描述
小明和他的女朋友是兩朵奇葩,總是願意把簡單問題搞得很複雜,這不小明剛接到女朋友發來的一條微信:“我們約會吧!3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm”。小明憑藉他奇葩的思維很快就明白了,微信上奇怪的亂碼實際上就是約會的時間“星期四 14:04”,因爲前面兩字符串中第1對相同的大寫英文字母(大小寫有區分)是第4個字母'D',代表星期四;第2對相同的字符是'E',那是第5個英文字母,代表一天裏的第14個鐘頭(於是一天的0點到23點由數字0到9、以及大寫字母A到N表示);後面兩字符串第1對相同的英文字母's'出現在第4個位置(從0開始計數)上,代表第4分鐘。
現給定兩對字符串,請你按照上述方法得到小明的約會時間。
輸入格式
輸入包含多組測試數據,每組輸入在4行中分別給出4個非空、不包含空格、且長度不超過60的字符串。
輸出
對於每組輸入,在一行中輸出約會的時間,格式爲“DAY HH:MM”,其中“DAY”是某星期的3字符縮寫,即MON表示星期一,TUE表示星期二,WED表示星期三,THU表示星期四,FRI表示星期五,SAT表示星期六,SUN表示星期日。題目輸入保證每個測試存在唯一解。
樣例輸入
3485djDkxh4hhGE
2984akDfkkkkggEdsb
s&hgsfdk
d&Hyscvnm
樣例輸出
THU 14:04
Hint:本題格式要求比較多,需要仔細處理每一個細節。
代碼如下:
#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
#include<set>
#include<map>
#include<iomanip>
using namespace std;
bool isodd(int n)
{
if (n % 2 != 0)
return true;
return false;
}
int main()
{
#ifdef ONLINE_JUDGE
#else
freopen("D:\\in.txt", "r", stdin);
freopen("D:\\out.txt", "w", stdout);
#endif
string s1,s2,s3,s4;
map<char, string> m;
map<char, int> m2;
vector<string> coll;
coll.push_back("MON");
coll.push_back("TUE");
coll.push_back("WED");
coll.push_back("THU");
coll.push_back("FRI");
coll.push_back("SAT");
coll.push_back("SUN");
for (int i = 0; i < 7; i++)
{
m[i + 'A'] = coll[i];
m[i + 'a'] = coll[i];
}
for (int i = 0; i < 14; i++)
{
m2[i + 'A'] = 10 + i;
m2[i + 'a'] = 10 + i;
}
while (cin >> s1 >> s2 >> s3 >> s4)
{
int len1 = min(s1.size(), s2.size());
int len2 = min(s3.size(), s4.size());
int cnt = 0;
for (int i = 0; i < len1; i++)
{
if (('A' <= s1[i] && s1[i] <= 'G') && (s1[i] == s2[i]) && cnt == 0)
{
string tmp = m[s1[i]];
cout << tmp;
cnt++;
}
else if (cnt == 1 && s1[i] == s2[i] && ((s1[i]>='0'&&s1[i]<='9')||('A' <= s1[i] && s1[i] <= 'N')))
{
if ('0' <= s1[i]&&s1[i] <= '9')
cout <<" "<<setfill('0')<<setw(2)<< s1[i];
else
cout <<" "<< m2[s1[i]];
break;
}
}
for (int i = 0; i < len2; i++)
{
if (s3[i] == s4[i] && (('A' <= s3[i] && s3[i] <= 'Z') || ('a' <= s3[i] && s3[i] <= 'z')))
{
cout << ":";
cout << setfill('0') << setw(2);
cout <<i << endl;
break;
}
}
}
return 0;
}