1736. 替换隐藏数字得到的最晚时间 - 力扣(LeetCode)


目标是:将字符串 time 中的 ? 替换为合适的数字,使它表示的时间是 “最晚的有效时间”。
步骤分析:
格式为 hh:mm,例如 "2?:?0"、"?4:5?"、"??:??" 等。
我们要找的时间是 00:00 到 23:59 之间的最大合法时间。
解法思路:
我们可以从左到右检查每一位:
-
time[0]是小时的十位:-
如果
time[0] == '?':-
如果
time[1] == '?'或者 <='3',最大可以是'2' -
否则(即
time[1] > '3'),最大只能是'1'
-
-
-
time[1]是小时的个位:-
如果
time[1] == '?':-
如果
time[0] == '2',最大只能是'3' -
否则(即
time[0]是'0'或'1'),最大是'9'
-
-
-
time[3]是分钟的十位:-
如果
time[3] == '?',最大是'5'
-
-
time[4]是分钟的个位:-
如果
time[4] == '?',最大是'9'
-
代码实现(Python):
def maximumTime(time: str) -> str:
time = list(time)
if time[0] == '?':
if time[1] == '?' or time[1] <= '3':
time[0] = '2'
else:
time[0] = '1'
if time[1] == '?':
if time[0] == '2':
time[1] = '3'
else:
time[1] = '9'
if time[3] == '?':
time[3] = '5'
if time[4] == '?':
time[4] = '9'
return ''.join(time)
示例:
-
输入:
"2?:?0"→ 输出:"23:50" -
输入:
"0?:3?"→ 输出:"09:39" -
输入:
"??:??"→ 输出:"23:59"
670

被折叠的 条评论
为什么被折叠?



