题目链接
https://pintia.cn/problem-sets/994805260223102976/problems/994805308755394560
题解一(部分正确)
这是我的方法,第2个测试点没有过,和正确的代码比较,目前没比较出来错误,可能是我map
用错了?
需要注意的点:
- 第一对是相同的大写字母A-G
- 第二对是相同的数字0-9和A-N
- 小时和分钟输出宽度为2,不足2位用零填充
- 不用map也行,可以用ASCII码和字符的对应关系
- 判断大小写字母、数字等函数C++已自带,不用自己写
// PAT BasicLevel 1014// https://pintia.cn/problem-sets/994805260223102976/problems/994805308755394560#include #include #include
题解二
网上找的,和我看起来思路一样啊……
参考链接:
#include //9.16#include #include #include using namespace std;void deal(string ch1, string ch2);void deal1(string ch3, string ch4);int main(){ string ch1, ch2, ch3, ch4; cin >> ch1 >> ch2 >> ch3 >> ch4; deal(ch1, ch2); deal1(ch3, ch4); return 0;}void deal(string ch1, string ch2){ string day[] = {"MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"}; int num, num1, i = 0; while (i < ch1.length() && i < ch2.length()) { if (ch1[i] == ch2[i] && (ch1[i] >= 'A' && ch1[i] <= 'G')) //一开始没有设定范围只是判断了其是否是大写,导致有的例子通不过 { num1 = ch1[i] - 'A'; break; } i++; } i++; cout << day[num1] << ' '; int num2; while (i < ch1.length() && i < ch2.length()) { if (ch1[i] == ch2[i]) { if (isdigit(ch1[i])) { num2 = ch1[i] - '0'; break; } else if (ch1[i] >= 'A' && ch1[i] <= 'N') //一开始没有设定范围只是判断了其是否是大写,导致有的例子通不过 { num2 = 10 + (ch1[i] - 'A'); break; } } i++; } printf("%02d:", num2);}void deal1(string ch3, string ch4){ int i = 0; int num3; while (i < ch3.length() && i < ch4.length()) { if (ch3[i] == ch4[i] && isalpha(ch3[i])) { num3 = i; break; } i++; } printf("%02d", num3);}
作者:
转载请注明出处:
欢迎讨论和交流!