在 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 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.