微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

LeetCode题解(0681):最近时刻(Python)

题目:原题链接(中等)

标签:字符串、贪心算法

解法时间复杂度空间复杂度执行用时
Ans 1 (Python) O ( 24 + 60 ) O(24+60) O(24+60) O ( 1 ) O(1) O(1)40ms (65.45%)
Ans 2 (Python)
Ans 3 (Python)

解法一:

class Solution:
    def nextClosestTime(self, time: str) -> str:
        hour1, minute1 = time.split(":")
        numbers = set(hour1 + minute1)
        hour2 = hour1
        minute2 = minute1

        # 寻找更大的分钟
        for i in range(int(minute1) + 1, 60):
            minute = str(i).zfill(2)
            if minute[0] in numbers and minute[1] in numbers:
                return hour2 + ":" + minute

        # 寻找更大的小时
        for i in range(int(hour1) + 1, 24):
            temp = str(i).zfill(2)
            if temp[0] in numbers and temp[1] in numbers:
                hour2 = temp
                break

        # 寻找最小的分钟
        for i in range(0, 60):
            temp = str(i).zfill(2)
            if temp[0] in numbers and temp[1] in numbers:
                minute2 = temp
                break

        # 这一天还有更大的小时
        if hour1 != hour2:
            return hour2 + ":" + minute2

        # 寻找下一天里最小的小时
        for i in range(0, 23):
            hour2 = str(i).zfill(2)
            if hour2[0] in numbers and hour2[1] in numbers:
                return hour2 + ":" + minute2

        # 无法改变
        return hour1 + ":" + minute1

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐