[pat B級]ホームズのデート
2910 ワード
【タイトル説明】大探偵ホームズに「デートしよう!3485 djDkxh 4 hhGE 2984 akDfkkggEdsb 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分目を表す4番目の位置(0からカウント)に表示されます.2対の文字列が与えられ、
ホームズがデートの時間を復号するのを助けてください.
【タイトルリンク】https://www.nowcoder.com/pat/6/problem/4040
【分析】この問題はいろいろな細部に注意しなければならない.アルファベットが等しいかどうかを判断するだけでなく、問題が与えた条件を満たすかどうかを判断する必要がある.例えば、最初の等しいアルファベットは大文字のAからZしかなく、2番目の等しいアルファベットは0~9とA~Zである.3番目の等しいアルファベットはa~zとA~Zです.もう1つの隠れた条件は、最初の2つの等しいアルファベットが1番目の文字列で探し、最後に等しいアルファベットが2番目の文字列で探すことです.整数型を文字列型に変換するには、to_を使用します.string()またはitoa()関数.文字列型を整数型に変換するにはatoi()関数を使用します.
【コード】
わかりました.メモの変な文字化けしは実はデートの時間「木曜日14:04」です.前の2つの文字列の1対目の同じ大文字と英語のアルファベット(大文字と小文字が区別されている)は
4番目のアルファベット「D」は木曜日を表します.2番目の同じ文字は「E」で、それは5番目の英語のアルファベットで、1日の14時間目を表しています(そこで1日の0時から23時まで数字の0から9、
および大文字AからNで表される);後ろの2つの文字列の1対目の同じ英字's'は、4分目を表す4番目の位置(0からカウント)に表示されます.2対の文字列が与えられ、
ホームズがデートの時間を復号するのを助けてください.
【タイトルリンク】https://www.nowcoder.com/pat/6/problem/4040
【分析】この問題はいろいろな細部に注意しなければならない.アルファベットが等しいかどうかを判断するだけでなく、問題が与えた条件を満たすかどうかを判断する必要がある.例えば、最初の等しいアルファベットは大文字のAからZしかなく、2番目の等しいアルファベットは0~9とA~Zである.3番目の等しいアルファベットはa~zとA~Zです.もう1つの隠れた条件は、最初の2つの等しいアルファベットが1番目の文字列で探し、最後に等しいアルファベットが2番目の文字列で探すことです.整数型を文字列型に変換するには、to_を使用します.string()またはitoa()関数.文字列型を整数型に変換するにはatoi()関数を使用します.
【コード】
#include
#include
#include
using namespace std;
// , “DAY HH:MM”, “DAY” 3 , MON ,TUE ,WED ,THU ,FRI ,SAT ,SUN 。 。
string day[7] = {"MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"};
bool judge(char x1, char x2, int &k, string &time, int i)
{
if (x1 == x2)
{
if (k == 1 && x1>='A' && x1<='Z')
{
int num = x1 - 'A';
time = day[num];
return true;
}
if (k == 2 && ((x1>='0' && x1<='9')||(x1>='A' && x1<='Z')))
{
if (x1 >= '0' && x1 <= '9')
time = time + " 0" + x1 + ":";
else
{
int hour = x1 - 'A' + 10;
// string hh="";
// itoa(hour,hh,10); itoa , atoi , itoa ,atoi
time = time + " " + to_string(hour) + ":"; // to_string int string
}
return true;
}
if (k == 3 && ((x1>='a' && x1<='z')||(x1>='A' && x1<='Z')))
{
if (i > 9)
time = time + to_string(i);
else
time = time + "0" + to_string(i);
return true;
}
}
return false;
}
int main()
{
string a, b, c, d;
cin >> a >> b >> c >> d;
string time = "";
int k = 1; //
for (int i = 0; i < a.length(); i++)
{
if(judge(a[i], b[i], k, time, i))
k++;
if(k==3)
break;
}
for (int j = 0; j < c.length(); j++)
{
if(judge(c[j], d[j], k, time, j))
k++;
}
cout<