當前位置:
首頁 >
【PAT甲级 约会】1061 Dating (20 分) C++ 全部AC
發布時間:2024/2/28
35
豆豆
生活随笔
收集整理的這篇文章主要介紹了
【PAT甲级 约会】1061 Dating (20 分) C++ 全部AC
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目
這個題要注意的細節很多。因為一個星期有七天,一天有24小時,所以要注意字母范圍這個隱藏條件,不符合條件的字母要跳過。
還要注意:第二次查找,要接著第一次找到的位置開始找。這個有點坑,題目里沒說明白,只說是第二個相同的字符,我一開始是從頭找的,所以這個點卡了很久。
所以,做題還是要先讀懂題再開始敲,不然的話,用錯誤的理解敲出來再一點一點改太浪費時間了。
自己用的測試用例,用于測試第二次查找的開始要接著第一次的結束位置繼續找這個坑
題解 C++
#include<iostream> #include<string> using namespace std; //這個題要注意的細節很多。因為一個星期有七天,一天有24小時,所以要注意字母范圍這個隱藏條件,不符合條件的字母要跳過。 int main() {string str1, str2, str3, str4;cin >> str1 >> str2 >> str3 >> str4;int weekday = -1;int hour = -1;//在前兩個字符串中,找第一個相同的大寫字母(由于一周七天的約束,應該在A-G范圍內)int temp = -1;int len = str1.length() < str2.length() ? str1.length() : str2.length();for (int i = 0; i < len; i++) {if (str1[i] == str2[i] && str1[i] >= 'A'&&str1[i] <= 'G') {weekday = str1[i] - 'A';temp = i;break;}}//接著上次找到的位置繼續找,找到第一個相同的數字(0-9)或大寫字母(A-N)for (int i = temp + 1; i < len; i++) {if (str1[i] == str2[i]) {if (str1[i] >= '0'&&str1[i] <= '9') {//是數字hour = str1[i] - '0';break;}else if (str1[i] >= 'A'&&str1[i] <= 'N') {//是大寫字母hour = 10 + (str1[i] - 'A');break;}}}//后兩個字符串中,找到第一個相同字母的位置int minute = -1;len = str3.length() < str4.length() ? str3.length() : str4.length();for (int i = 0; i < len; i++) {if (str3[i] == str4[i]) {if ((str3[i] >= 'A'&&str3[i] <= 'Z') || (str3[i] >= 'a'&&str3[i] <= 'z')) {minute = i;break;}}}string weekdays[] = { "MON","TUE","WED","THU","FRI","SAT","SUN" };cout << weekdays[weekday] << " ";printf("%02d:%02d", hour, minute);system("pause"); }總結
以上是生活随笔為你收集整理的【PAT甲级 约会】1061 Dating (20 分) C++ 全部AC的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【PAT甲级 进位相加】1058 A+B
- 下一篇: 【PAT甲级 前导0,排序】1069 T