1014ホームズのデート(20分)C++推奨テスト用例+サンプルコード+考え方


1014ホームズのデート(20分)
大探偵ホームズは奇妙なメモを受け取った:私たちはデートしましょう!3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm .大探偵はすぐに分かった.メモの奇妙な文字化けしは実際にデートの時間である木曜日14:04で、前の2つの文字列の1対目の同じ大文字の英語のアルファベット(大文字と小文字が区別されている)は4番目のアルファベットDで、木曜日を代表しているからだ.2番目の同じ文字はEで、それは5番目の英語のアルファベットで、1日の14時間目を表しています(1日の0時から23時まで数字の0から9、および大文字のAからNで表されています).後の2つの文字列の1対目の同じ英字sは、4番目の位置(0からカウント)に現れ、4分目を表す.2対の文字列が与えられ、ホームズがデートの時間を復号するのを助けてください.
≪フォーマットの入力|Input Format|oem_src≫:4行に4つの空白ではなく、スペースを含まず、長さが60を超えない文字列を入力します.
出力フォーマット:一行の中でデートの時間を出力して、フォーマットはDAY HH:MMで、その中のDAYはある週の3文字の略語で、つまりMONは月曜日を表して、TUEは火曜日を表して、WEDは水曜日を表して、THUは木曜日を表して、FRIは金曜日を表して、SATは土曜日を表して、SUNは星期日を表します.問題入力は、各テストに一意の解があることを保証します.
入力サンプル:3485 djDkxh 4 hhGE 2984 akDfkkkggEdsb s&hgsfdkd&Hyscvnm
出力サンプル:THU 14:04
注意点:
多くの条件はすべて詳しく出していないで、少し穴があいて、する時に意味を理解し間違えたことを招きます
方法及び注意点:①検索週:位置は等しく、二組の文字列は一対一に対応して検索し、範囲A-Gは同じである.
②検索時間:位置が等しい場合、2組の文字列は1回目の等しい下付き文字から始まり、範囲0から9、AからNまで、同じであれば見つける
③検索分:位置が等しく、2組の文字列で検出されたアルファベットの
デートの時間を出力して、フォーマットはDAY HHです:MMは0を補うことを覚えています
推奨テストデータ:
      1:
3485djEkxh4hhGE 
2984akEfkkkkggEdsb 
s&hgsfdk 
d&Hyscvnm

       :
FRI 14:04


      2:
3485djGkxh4hhG2 
2984akGfkkkkgg2dsb 
s&hgsfdk 
d&hyscvnm

       :
SUN 02:02

サンプルコード1:
#include
using namespace std;
#define range(num,x,y)(num>=x&&num<=y)
string week[8]={
     "MON","TUE","WED","THU","FRI","SAT","SUN"};
int main(){
     
	string str[4];
	for(int i=0;i<4;i++)
		cin>>str[i];
	
	int len=min(str[0].size(),str[1].size());
	int len2=min(str[2].size(),str[3].size());
	
	int cnt=0;
	for(int i=0;i<len;i++){
     
		if(cnt==0&&str[0][i]==str[1][i]&&range(str[0][i],'A','G')){
     
			cout<<week[str[0][i]-'A']<<" ";
			cnt++;
			continue;
		}
		if(cnt==1&&str[0][i]==str[1][i]){
     
	
			if(range(str[0][i],'A','N')){
     
				cout<<(10+str[0][i]-'A')<<":";
				cnt++;
			}else if(range(str[0][i],'0','9')){
     
				printf("%02d:",str[0][i]-'0');
				cnt++;
			}
		}
	}
	for(int i=0;i<len2;i++){
     
		if(str[2][i]==str[3][i]&&range(str[2][i],'a','z')||range(str[2][i],'A','Z')){
     
			printf("%02d",i);
			break;
		}
	}
	return 0;
}