python3__leecode/1736.替换隐藏数字得到的最晚时间

本文介绍了如何解决LeetCode上的一个问题——替换隐藏数字得到的最晚时间。通过贪心策略,从高位到低位,确保每个位置在合法范围内取最大值,从而得到最晚的有效时间。例如,对于输入'2?:?0',输出为'23:50'。解题方法包括直接根据时间规则设置每位最大值,如将'?'替换为对应位置的最大可能数字。
部署运行你感兴趣的模型镜像

1736. latest time by replacing hidden digits替换隐藏数字得到的最晚时间

一、刷题内容

原题链接

https://leetcode-cn.com/problems/latest-time-by-replacing-hidden-digits/

内容描述

给你一个字符串 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
题目数据保证你可以由输入的字符串生成有效的时间

二、解题方法

1.方法一:贪心

为了得到最晚有效时间,我们可以从高位向低位枚举,在保证时间有效的情况下,使得每一位尽可能取最大值。

因为本题中时间的位数较少,我们依次考虑每一位的规则即可。
第一位:若第二位的值已经确定,且值落在区间 [4,9][4,9] 中时,第一位的值最大只能为 11,否则最大可以为 22;
第二位:若第一位的值已经确定,且值为 22 时,第二位的值最大为 33,否则为 99;
第三位:第三位的值的选取与其它位无关,最大为 55;
第四位:第四位的值的选取与其它位无关,最大为 99。

class Solution:
    def maximumTime(self, time: str) -> str:
        time = list(time)
        for i in range(len(time)):
            if i==0 and time[i]=='?':
                if time[i+1] == '?' or int(time[i+1])<=3:
                    time[i] = '2'
                else:
                    time[i] = '1'
            if i==1 and time[i]=='?':
                if time[i-1]=='0' or time[i-1]=='1':
                    time[i] = '9'
                else:
                    time[i] = '3'
            if i==3 and time[i]=='?':
                time[i] = '5'
            if i==4 and time[i]=='?':
                time[i] = '9'
        return ''.join(time)

2.方法二

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)

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百里 Jess

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值