替换隐藏数字得到的最晚时间
题目描述:
给你一个字符串time,格式为hh:mm(小时:分钟),其中某几位数字被隐藏(用?表示)。
有效的时间为00:00到23:59之间的所有时间,包括00:00和23:59。
替换time中隐藏的数字,返回你可以得到的最晚有效时间。
示例1:
输入:time = "2?:?0"
输出:"23:50"
解释:以数字'2'开头的最晚一小时是23,以'0'结尾的最晚一分钟是50。
示例2:
输入:time = "0?:3?"
输出:"09:39"
示例3:
输入:time = "1?:22"
输出:"19:22"
提示:
- time的格式为hh:mm
- 题目数据保证你可以由输入的字符串生成有效的时间
思路:枚举
python代码:
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)
java代码:
class Solution {
public String maximumTime(String time) {
StringBuilder sb = new StringBuilder();
sb.append(time.charAt(0) == '?' ? (time.charAt(1) == '?' || time.charAt(1) < '4') ? '2' : '1' : time.charAt(0));
sb.append(time.charAt(1) == '?' ? sb.charAt(0) == '2' ? '3' : '9': time.charAt(1));
sb.append(':');
sb.append(time.charAt(3) == '?' ? '5' : time.charAt(3));
sb.append(time.charAt(4) == '?' ? '9' : time.charAt(4));
return sb.toString();
}
}