目录

0681:最近时刻(★)

力扣第 681 题

题目

给定一个形如 "HH:MM" 表示的时刻 time ,利用当前出现过的数字构造下一个距离当前时间最近的时刻。每个出现数字都可以被无限次使用。

你可以认为给定的字符串一定是合法的。例如, "01:34" "12:09" 是合法的,“1:34”“12:9” 是不合法的。

示例 1:

输入: "19:34"
输出: "19:39"
解释: 利用数字 1, 9, 3, 4 构造出来的最近时刻是 19:39,是 5 分钟之后。
结果不是 19:33 因为这个时刻是 23 小时 59 分钟之后。

示例 2:

输入: "23:59"
输出: "22:22"
解释: 利用数字 2, 3, 5, 9 构造出来的最近时刻是 22:22。
答案一定是第二天的某一时刻,所以选择可构造的最小时刻。

提示:

  • time.length == 5
  • time 为有效时间,格式为 "HH:MM".
  • 0 <= HH < 24
  • 0 <= MM < 60

分析

因为时刻总数只有60*24,所以可以暴力遍历每个时刻,判断是否合法。

解答

1
2
3
4
5
6
7
8
9
def nextClosestTime(self, time: str) -> str:
	h, m = map(int, time.split(':'))
	cur = h*60+m
	while True:
		cur = (cur+1)%1440
		h, m = divmod(cur,60)
		t = '%02d:%02d'%(h,m)
		if set(t)<=set(time):
			return t

48 ms