在 Python 中查找给定时间之后第一个回文时间


假设我们有一个字符串 s,它表示 24 小时格式的时间,格式为 HH:MM,其中 HH 的范围是 0 到 23,MM 的范围是 0 到 59。我们需要找到下一个最接近的回文时间(作为字符串读取时)。如果没有这样的字符串,则返回 -1。

所以,如果输入是 "22:22",则输出将是 "23:32"。

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

  • n := s 的大小

  • hour_string := s 从索引 0 到 2 的子字符串

  • minute := s 从索引 3 到 5 的子字符串,并将其转换为整数

  • rev_hour := 反转 hour_string 并将其转换为数字

  • rev_hr_str := hour_string 的反转

  • h := hour_string 作为整数

  • temp := 空字符串,res := 空字符串

  • 如果 h 为 23 且 minute >= 32,则

    • res := -1

  • 否则,当 minute < rev_hour 时,则

    • 如果 h < 10,则

      • temp := "0"

    • temp := temp 连接 h

    • 如果 rev_hour < 10,则

      • res := res 连接 temp 连接 ":0" 连接 rev_hr_str

    • 否则,

      • res := res 连接 temp 连接 ":" 连接 rev_hr_str

  • 否则,

    • h := h + 1

    • rev_hr_str := h 作为字符串的反转

    • rev_hour := h 的反转

    • 如果 h < 10,则

      • temp := "0"

    • temp := temp 连接 h

    • 如果 rev_hour < 10,则

      • res := res 连接 temp 连接 ":0" 连接 rev_hr_str

    • 否则,

      • res := res 连接 temp 连接 ":" 连接 rev_hr_str

  • 返回 res

示例

让我们看看下面的实现以获得更好的理解:

 实时演示

def get_next_palindrome_time(s) :
   n = len(s)
   hour_string = s[0 : 2]
   minute = int(s[3 : 5])
   rev_hour = int(hour_string[::-1])
   rev_hr_str = hour_string[::-1]
   h = int(hour_string)
   temp = ""
   res = ""
   if (h == 23 and minute >= 32) :
      res = "-1"
   elif (minute < rev_hour) :
      if (h < 10) :
         temp = "0"
      temp = temp + str(h)
      if (rev_hour < 10) :
         res = res + temp + ":0" + rev_hr_str
      else :
         res = res + temp + ":" + rev_hr_str
   else :
      h += 1
      rev_hr_str = str(h)[::-1]
      rev_hour = int(rev_hr_str)
      if (h < 10) :
         temp = "0"
      temp = temp + str(h)
      if (rev_hour < 10) :
         res = res + temp + ":0" + rev_hr_str
      else :
         res = res + temp + ":" + rev_hr_str
return res
s = "22:22"
print(get_next_palindrome_time(s))

输入

"22:22"

输出

23:32

更新于:2020-08-27

293 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告