PAT 1014 福爾摩斯的約會 20

2022-08-27 21:45:14 字數 2401 閱讀 3764

大偵探福爾摩斯接到一張奇怪的字條:「我們約會吧! 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),,這個字元代表了小時的資訊,例如:

yn6abcmzd8onp6

yh6abdmzg8ln

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 2

using

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 大偵探很快就明白...