我正在尝试解决Hackerrank问题 "时间转换", 以下是该问题的陈述,不使用任何库。
我想到了以下内容:
time = raw_input().strip()
meridian = time[-2:] # "AM" or "PM"
time_without_meridian = time[:-2]
hour = int(time[:2])
if meridian == "AM":
hour = (hour+1) % 12 - 1
print ("%02d" % hour) + time_without_meridian[2:]
elif meridian == "PM":
hour += 12
print str(hour) + time_without_meridian[2:]
然而,这在一个测试用例上失败了:
由于测试用例对用户隐藏,因此我很难看出问题出在哪里。 "12:00:00AM" 被正确地转换为 "00:00:00",而 "01:00:00AM" 被转换为 "01:00:00"(带有填充零)。这个实现可能存在什么问题?
hour==12
的特殊情况比使用扭曲的hour = (hour+1) % 12 - 1
更简单。 - smci