Computer >> Máy Tính >  >> Lập trình >> Python

Tìm thời gian là palindromic và đến sau thời gian nhất định trong Python

Giả sử chúng ta có một chuỗi s biểu thị thời gian ở định dạng 24 giờ là HH:MM để HH sẽ nằm trong khoảng 0 đến 23 và MM sẽ nằm trong khoảng 0 đến 59, Chúng ta phải tìm thời gian gần nhất tiếp theo là palindrome khi được đọc dưới dạng chuỗi. Nếu không có chuỗi như vậy, hãy trả về -1.

Vì vậy, nếu đầu vào là "22:22", thì đầu ra sẽ là "23:32".

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • n:=kích thước của s

  • giờ_string:=chuỗi con của s [từ chỉ mục 0 đến 2]

  • phút:=chuỗi con của s [từ chỉ số 3 đến 5] và chuyển nó thành số nguyên

  • rev_hour:=đảo ngược chuỗi giờ và chuyển nó thành số

  • rev_hr_str:=đã đảo ngược giờ_string

  • h:=giờ_string dưới dạng số nguyên

  • temp:=blank string, res:=blank string

  • nếu h là 23 và phút> =32 thì

    • res:=-1

  • ngược lại khi phút

    • nếu h <10 thì

      • tạm thời:="0"

    • temp:=temp nối liền h

    • nếu rev_hour <10, thì

      • res:=res concatenate temp concatenate ":0" concatenate rev_hr_str

    • nếu không,

      • res:=res concatenate temp concatenate ":" concatenate rev_hr_str

  • nếu không,

    • h:=h + 1

    • rev_hr_str:=đảo ngược h thành chuỗi

    • rev_hour:=đã đảo ngược h

    • nếu h <10 thì

      • tạm thời:="0"

    • temp:=temp nối liền h

    • nếu rev_hour <10, thì

      • res:=res concatenate temp concatenate ":0" concatenate rev_hr_str

    • nếu không,

      • res:=res concatenate temp concatenate ":" concatenate rev_hr_str

  • trả lại res

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

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))

Đầu vào

"22:22"

Đầu ra

23:32