大偵探福爾摩斯接到一張奇怪的字條:「我們約會吧! 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首先理解題意:
1.前兩個字串包含星期和小時兩個資訊,首先,兩個字串在同一位置有相同的大寫字母代表了星期的資訊,且大寫字母在a-g之間;
2.在表示星期的大寫字母的後面,再找相同的字元(包含大寫字母a-n,和數字0-9),,這個字元代表了小時的資訊,例如:
yn6abcmzd8onp6yh6abdmzg8ln
1)先找相同的大寫字母,得到b,表示星期二,其中,第乙個位置的y雖然相同,但不在a-g之間,大寫字母b之前的6和a也不滿足);2)再在b之後找相同的字元,得到8,表示08點,其中m雖然相同,但不是大寫字母,大寫字母z不在a-n之間,在8後面的n雖然也滿足條件,但已經確定了時間為08點,則n應該捨棄
注意在時間小於10(0-9)的時候,列印時間時前面需補0
3.在後兩個字串中確定了分鐘的資訊,需要找到相同的英文本母所在的位置(大寫和小寫字母均可),同樣只取第乙個滿足條件的字元所在的位置,列印時不足兩位的同樣需要補0
程式說明:
1.確定需要比較的兩個字串中較短的字串長度,再進行比較;
2.判斷乙個字元ch是不是大寫字母的三種方法:
isupper(ch);//是大寫字母返回非零值(true),否則返回零(false)if(ch>='a'&&ch<='z');
if(ch>=65&&ch<=90);//65和90分別為a和z對應的ascii碼值
3.判斷乙個字元ch是不是小寫字母的三種方法:
islower(ch);//是小寫字母返回非零值(true),否則返回零(false)if(ch>='a'&&ch<='z')
if(ch>=97&&ch<=122)//97和122分別為a和z對應的ascii碼值
4.判斷是否是字母用 isalpha(ch),若是,返回非零值(true),否則返回零(false)判斷是否是數字用 isdigit(num),若是,返回非零值(true),否則返回零(false)
**注意:上面提到的 isupper()、islower()、isdigit()、isalpha()均為巨集定義,非真正的函式
5.在多餘位置上補0的方法:
cout<1 #include 2using
namespace
std;
3int min(int a,intb)7
intmain() ;
11 cin>>str[0]>>str[1]>>str[2]>>str[3
];12
intlen0,len2;
13 len0=min(strlen(str[0]),strlen(str[1
]));
14 len2=min(strlen(str[2]),strlen(str[3
]));
15for(int i=0;i)22}
23else
if(count==1)28
else
if(isdigit(str[0
][i]))
32} 33}
34}35for(int i=0;i)41}
42}43 system("
pause
");
44return0;
45 }
PAT 1014 福爾摩斯的約會
大偵探福爾摩斯接到一張奇怪的字條 我們約會吧!3485djdkxh4hhge 2984akdfkkkkggedsb s hgsfdk d hyscvnm 大偵探很快就明白了,字條上奇怪的亂碼實際上就是約會的時間 星期四 14 04 因為前面兩字串中第1對相同的大寫英文本母 大小寫有區分 是第4個字母...
PAT 1014 福爾摩斯的約會
char week table 7 3 就行了 定義成二維陣列儲存時可以簡單看作一排乙個字串陣列 const char week table 7 這樣是定義了乙個指標陣列 指標元素分別指向每乙個對應的字串儲存的首位址 include include int main void char str1 6...
PAT 1014 福爾摩斯的約會
時間限制 100 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 chen,yue 大偵探福爾摩斯接到一張奇怪的字條 我們約會吧!3485djdkxh4hhge 2984akdfkkkkggedsb s hgsfdk d hyscvnm 大偵探很快就明白...