通过在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(blank string)

  • 可能 := 来自可能的新列表

  • 对列表进行排序

  • 对于范围 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