使用Python重新使用相同的数字来查找最近时间的程序

使用Python重新使用相同的数字来查找最近时间的程序

假设我们有一个“hh:mm”格式的24小时字符串,我们必须找到下一个最接近的时间,该时间可以通过重新使用给定数字来形成。我们可以任意多次重复使用给定字符串中的数字。

因此,如果输入为s =“03:15”,则输出将为03:30,即最接近重复给定数字的时间为03:30。

要解决这个问题,我们将遵循以下步骤:

  • 使用:=具有两位数字的小时和两位数字的分钟值的列表
  • 可能:=一个新集合
  • 定义一个函数backtrack()。这将采用路径
  • 如果路径的大小与4相同,则
    • (路径[前两位数字]连接“:”连接路径[后两位数字])并将其插入possible。
    • 返回
  • 对于使用中的每个p,执行以下操作:
    • 如果(路径大小与0相同且p>“2”)为假且(路径与“2”相同且p>“3”)为假且(路径大小与2相同且p>“5”)为假,则
      • backtrack(path + p)
  • 从主要方法执行以下操作:
  • backtrack(空字符串)
  • 可能:=从possible的新列表
  • 对可能的列表进行排序
  • 对于范围为0到可能大小-2的i,执行以下操作:
    • 如果possible[i]与s相同,则
      • 返回possible[i + 1]
  • 返回possible[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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程