问题描述
你一个字符串 time ,格式为 hh:mm(小时:分钟),其中某几位数字被隐藏(用 ? 表示)。有效的时间为 00:00 到 23:59 之间的所有时间,包括 00:00 和 23:59 。替换 time 中隐藏的数字,返回你可以得到的最晚有效时间。
输入:time = 2?:?0”
输出:”23:50
解决方案
按照顺序逐位判断
对于小时的第一位如果为?,则有两种不同的情况:
小时的第二位在几种情况中 ('0','1','2','3',) ,则小时第一位取2
小时的第二位不在几种情况中,则小时的第一位只能取 1
对于小时的第二位如果为 ? 也有两不同的情况:
小时的第一位在此情况中('0','1'),则小时的第二位取9为最晚时间
若小时的第一位为2,则此时小时的第二位取3为最晚时间
对于分钟的二位如果为??,则第一位取5第二位取9
代码清单 1替换 time 中隐藏的数字,返回你可以得到的最晚有效时间。
代码语言:javascript复制class Solution:
def maximumTime(self, time: str) -> str:
time = list(time)
if time[0] == '?':
time[0] = '2' if time[1] in ('0','1','2','3','?') else '1'
if time[1] == '?':
time[1] = '9' if time[0] in ('0','1') else '3'
if time[3] == '?': time[3] = '5'
if time[4] == '?': time[4] = '9'
return "".join(time)
结语
通过讨论有几种情况来完成这道题,因为此题可能出现的种类不多,便可以只用这种方法,若出现情况较多的题目,这种方法便不可行,需要一种更简便更直接的方法解决此类题。