通过在python中重用给定时间的相同数字来查找最近时间的程序
假设我们有一个“hh:mm”格式的24小时字符串,我们必须找到可以通过重用给定数字形成的下一个最接近的时间。我们可以根据需要多次重复使用给定字符串中的数字。
因此,如果输入类似于s="03:15",那么输出将是03:30,作为重复给定数字的最近时间03:30。
为了解决这个问题,我们将按照以下步骤操作:
使用:=具有两位数小时和两位数分钟值的列表
可能:=一组新的
定义一个函数backtrack()。这将采取路径
如果路径的大小与4相同,则
(路径[前两位数字]连接“:”连接路径[后两位数字])并将其插入到可能中。
返回
对于使用中的每个p,执行
回溯(路径+p)
如果(路径大小与0相同且p>“2”)为假且(路径与“2”相同且p>“3”)为假且(路径大小与2相同且p>“5”")为假,则
从main方法执行以下操作:
backtrack(blankstring)
可能:=来自可能的新列表
对列表进行排序
对于范围0到可能的大小-2的i,执行
返回可能[i+1]
如果可能[i]与s相同,则
返回可能[0]
让我们看下面的实现来更好地理解:
示例
class Solution: def solve(self, s): use = [s[0], s[1], s[3], s[4]] possible = set() def backtrack(path): nonlocal possible, use if len(path) == 4: possible.add(path[:2] + ":" + path[2:]) return for p in use: if (not (len(path) == 0 and p > "2") and not (path == "2" and p > "3") and not (len(path) == 2 and p > "5")): backtrack(path + p) backtrack("") possible = list(possible) possible.sort() for i in range(len(possible) - 1): if possible[i] == s: return possible[i + 1] return possible[0] ob = Solution() s = "03:15" print(ob.solve(s))
输入
"03:15"输出结果
03:30