題目出處
難度
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 結果