PAT (Basic Level) Practise 1014 福尔摩斯的约会

题目链接 http://www.patest.cn/contests/pat-b-practise/1014

大致题意:对比两对字符串,找出第一对字符串中第1对相同的大写英文字母,并且输出其对应的星期数。在比对第一对字符串中第2对相同的字符,输出其对应的钟头最后找出后面一对字符串中第1对相同的英文字母, 输出其对应的分钟

我使用了STL中的map来达到字母和表达星期几的字符串之间的映射 ,使用insert(pair<>)的方式来添加map元素,查询用数组方式即可,也算是熟练了一下map怎么用。。

因为题目两个地方都只取第一个相同的,一开始写的时候找到相同元素之后没有立即break掉,导致WA了两发。

AC代码

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <map>
 4 using namespace std;
 5 string s1,s2,s3,s4;
 6 map< char,string > imap;
 7 int main()
 8 {
 9     imap.insert(pair< char, string >('A', "MON"));
10     imap.insert(pair< char, string >('B', "TUE"));
11     imap.insert(pair< char, string >('C', "WED"));
12     imap.insert(pair< char, string >('D', "THU"));
13     imap.insert(pair< char, string >('E', "FRI"));
14     imap.insert(pair< char, string >('F', "SAT"));
15     imap.insert(pair< char, string >('G', "SUN"));
16     while( cin>>s1>>s2>>s3>>s4 )
17     {
18         int len1=s1.length();
19         int len2=s2.length();
20         int len3=s3.length();
21         int len4=s4.length();
22         int flag=0;
23         for( int i=0; i<( len1>len2? len2:len1 ); i++ )
24         {
25             if( s1[i]==s2[i] && flag==0 && s1[i]>=65 && s1[i]<=90 )
26             {
27                  cout<<imap[s1[i]]<<" ";
28                  flag=1;
29                  continue;
30             }
31             else if( s1[i]==s2[i] && flag==1  )
32             {
33                  if( s1[i]>=48 && s1[i]<=57 )
34                     cout<<"0"<<s1[i]-'0'<<":";
35                  else
36                  {
37                     if( s1[i]>=65 && s1[i]<=90 )
38                        cout<<s1[i]-'A'+10<<":";
39                      else
40                        cout<<s1[i]-'a'+10<<":";
41                  }
42                  break;
43             }
44         }
45        for( int i=0; i<( len3>len4? len4:len3 ); i++ )
46         if( s3[i]==s4[i] && ( (s3[i]>=65 && s3[i]<=90) || (s3[i]>=97 && s3[i]<=122) ) )
47        {
48            if( i<10 )
49             cout<<"0"<<i<<endl;
50            else
51             cout<<i<<endl;
52             break;
53        }
54     }
55     return 0;
56 }

第一篇博客。。找自信的,好水啊==

原文地址:https://www.cnblogs.com/kiwibird/p/4798824.html