题目描述

给你一个字符串 s,表示一个 12 小时制的时间格式,其中一些数字(可能没有)被 "?" 替换。

12 小时制时间格式为 "HH:MM" ,其中 HH 的取值范围为 00 至 11MM 的取值范围为 00 至 59。最早的时间为 00:00,最晚的时间为 11:59

你需要将 s 中的 所有 "?" 字符替换为数字,使得结果字符串代表的时间是一个 有效 的 12 小时制时间,并且是可能的 最晚 时间。

返回结果字符串。

思路

分几种情况讨论。

  • 对于 hh:
    1. 如果是 ??,那么就是 11
    2. 如果是 ?X,如果 X 小于 2,就是 1X,否则是 0X
    3. 如果是 X?,如果 X 为 0,就是 X9,否则是 X1(11)。
  • 对于 mm:
    1. 如果是 ??,那么就是 59
    2. 如果是 ?X,那么就是 5X
    3. 如果是 X?,那么就是 X9

最终代码:

class Solution:
    def findLatestTime(self, s: str) -> str:
        hm = s.split(":")
        h, m = hm[0], hm[1]
 
        if h[0] == '?' and h[1] == '?':
            h = '11'
        elif h[0] == '?':
            t = ord(h[1])
            if t < ord('2'):
                h = '1'+h[1]
            else:
                h = '0'+h[1]
        elif h[1]=='?':
            if h[0] == '0':
                h = '09'
            else:
                h = '11'
        if m[0] == '?' and m[1] == '?':
            m = '59'
        elif m[0] == '?':
            m = '5'+m[1]
        elif m[1] == '?':
            m = m[0]+'9'
        return "{}:{}".format(h, m)

想得太多