PAT-B 1014 福爾摩斯的約會 【字串+細節】
PAT-B 1014 福爾摩斯的約會
https://pintia.cn/problem-sets/994805260223102976/problems/994805308755394560
題目
大偵探福爾摩斯接到一張奇怪的字條:我們約會吧! 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
分析
設四個字串分別為S1,S2,S3,S4。
1.星期幾,S1和S2第一對相同的字元,而且字元在'A' ~ 'G' 之間。
2.小時,確定星期幾的字元後的第一對S1和S2相同的字元,而且字元在'A' ~ 'N' 或 '0' ~ '9'之間
3.分鐘, S3和S4的第一對相同字元的下標,而且字元為字母。
C++程式
#include<iostream>
#include<string>
#include<ctype.h>
using namespace std;
const string Day[]={"MON","TUE","WED","THU","FRI","SAT","SUN"};
int main()
{
string s1,s2,s3,s4;
cin>>s1>>s2>>s3>>s4;
int p1=-1,p2=-1,p3=-1;
//尋找第一對相同的 <大寫英文字母>
for(int i=0;i<s1.length()&&i<s2.length();i++)
{
if(p1==-1&&s1[i]==s2[i]&&('A'<=s1[i]&&s1[i]<='G'))
p1=i;//記錄下標位置
else if(p1!=-1&&s1[i]==s2[i]&&(isdigit(s1[i])||'A'<=s1[i]&&s1[i]<='N'))//已找到第一對,尋找第二對相同的<字元>
{
p2=i;
break;//前兩個都找到,跳出
}
}
//尋找後兩個字串中第一對相同的【英文字母】
for(int i=0;i<s3.length()&&i<s4.length();i++)
{
if(s3[i]==s4[i]&&isalpha(s3[i]))
{
p3=i;
break;
}
}
//輸出
cout<<Day[s1[p1]-'A']<<" ";//對應的星期的下標為s1[p1]-'A'
int h=(s1[p2]>='A')?(s1[p2]-'A'+10):(s1[p2]-'0');
printf("%02d:%02d\n",h,p3);//使用%02d格式輸出,不足兩位,前面補零
return 0;
}
相關文章
- 掌握 Swift 的字串細節Swift字串
- PAT-B 1048 數字加密【字串】加密字串
- PAT-B 1078 字串壓縮與解壓【字串】字串
- 細節雜記 移除字串中的字元 remove indexof 字串大小比較 compare字串字元REMIndex
- 阿里釋出的規約外掛,細節都在這裡!!!阿里
- PAT-B 1093 字串A+B 【集合】字串
- PAT-B 1029 舊鍵盤【字串】字串
- PAT-B 1031 查驗身份證 【字串】字串
- PAT-B 1033 舊鍵盤打字【字串】字串
- PAT-B 1009 說反話【字串】字串
- Oracle SQL細節總結之constraint約束OracleSQLAI
- 星球MetaX智慧合約系統DAPP開發(功能細節)APP
- 細節決定ERP專案啟動會的成敗
- PAT-B 1079 延遲的迴文數【字串+大數加法】字串
- 編寫約玩原始碼不能忽視的細節,拒絕Bug找上門原始碼
- 慢慢細談Android 面試的細節Android面試
- 工作細節
- 小細節
- PAT-B 1024 科學計數法【模擬+字串】字串
- PAT-B 1003 我要通過!【規律+字串】字串
- Java高階開發必會的50個效能優化細節Java優化
- JavaWeb—Servlet基礎(細節版,相當細節)JavaWebServlet
- Layer的實現細節
- oracle中update的細節Oracle
- 智慧合約量化跟單策略交易系統功能開發(需求細節)
- SET智慧量化合約平臺開發上線(流程完善、細節落地)
- 記錄一些React的一些細節,會不斷更新React
- 理理Vue細節Vue
- Docker映象細節Docker
- 細節總結
- MyBatis摳細節MyBatis
- Wise 打包細節
- [JAVA] Java switch的使用細節Java
- EfficientNet模型的完整細節模型
- 提高javascript效能的小細節JavaScript
- iOS中使用UICollectionView的細節iOSUIView
- oracle並行的小細節Oracle並行
- 細節決定成敗!APP設計不容忽視的20個細節APP