我一直在研究AM / PM时钟到24小时制,但出于某种原因我陷入困境。我不确定我在做什么假设/错误。我尝试了很多测试用例,似乎无法创建被拒绝的错误代码。
它是hackerrank problem。我知道有解决方案,但我只想知道为什么我的代码不起作用,因为我想了解我做错了什么。
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main(){
string time;
cin >> time;
string str_hours = time.substr(0,2);
string str_minutes = time.substr(3,2);
string str_seconds = time.substr(6,2);
string period = time.substr(8,2);
int hours = stoi(str_hours);
if(period.compare("PM") == 0) {
hours += 12;
}
str_hours = to_string(hours);
if(hours < 10) {
str_hours.insert(0,"0");
}
cout << str_hours << ":" << str_minutes << ":" << str_seconds;
return 0;
}
我知道这是我的错,但我只是渴望另一种观点。非常感谢您阅读本文。
答案 0 :(得分:2)
您的代码存在的问题是它处理边框条件:它将12:15:00PM
(中午十五点)转换为无效时间24:15:00
。
同样的情况发生在午夜12点,午夜,转换后的中午12点。