【Lintcode】python – [862] Next Closest Time 個人解法筆記 | 內有 set 判斷是否 subset 的用法

➣ Reading Time: 5 minutes

題目出處

862 · Next Closest Time

難度

medium

個人範例程式碼

class Solution:
    """
    @param time: the given time
    @return: the next closest time
    """
    def next_closest_time(self, time: str) -> str:
        # write your code here
        digits = set(time)
        hr, m = int(time[0:2]), int(time[3:5])
        current = hr*60+m
        # 0 - 1440
        for i in range(1, 1441):
            next_time = (current + i)%1440
            next_time = self.change_format(next_time)
            print(next_time)
            if set(next_time) <= digits:
                return next_time

    def change_format(self, x):
        hr, m = x//60, x%60
        return f"{hr:02}:{m:02}"

算法說明

這題基本上可以直接照題目的要求做,但因為時間格式的關係,不是那麼好直接處理,
當然也是可以使用 datetime 之類的 library,但這樣也許有失題目本身想考的東西XD

最後採取的策略是換算 24hr*60 = 1440 min,
用 for 去跑 1440 次,並 %1440,並找到最近的符合結果即可。

最近在練習程式碼本身就可以自解釋的 Coding style,可以嘗試直接閱讀程式碼理解

subset 用法

這邊可以使用 subset 處理,可以使用「<=」取子集合。

例如:{a,b,c} <= {a,b,c,d} 這樣的概念。

input handling

x

Boundary conditions

當符合結果時,return 結果

Reference

Howard Weng
Howard Weng

我是 Howard Weng,很多人叫我嗡嗡。這個網站放了我的各種筆記。希望這些筆記也能順便幫助到有需要的人們!如果文章有幫助到你的話,歡迎幫我點讚哦!

文章: 728

★留個言吧!內容有誤或想要補充也歡迎與我討論!