LeetCode 1736 - 替换隐藏数字得到的最晚时间

7/10/2021 LeetCode
简单

原题链接:https://leetcode-cn.com/problems/latest-time-by-replacing-hidden-digits (opens new window)

# 题目描述

给你一个字符串 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(object):
    def maximumTime(self, time):
        """
        :type time: str
        :rtype: str
        """
        h1, h2, m1, m2 = time[0], time[1], time[3], time[4]
        if h1 == '?' and h2 == '?':
            h1, h2 = '2', '3'
        elif h1 == '?':
            if int(h2) >= 4:
                h1 = '1'
            else:
                h1 = '2'
        elif h2 == '?':
            if int(h1) < 2:
                h2 = '9'
            else:
                h2 = '3'
        if m1 == '?': m1 = '5'
        if m2 == '?': m2 = '9'
        return h1 + h2 + ':' + m1 + m2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# 总结

看了题解的一些其他解法,写法挺很多,逻辑的可变换性很大。