Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

หาเวลาที่เป็นพาลินโดรมและมาหลังเวลาที่กำหนดใน Python


สมมติว่าเรามีสตริงที่แทนเวลาในรูปแบบ 24 ชั่วโมงเป็น HH:MM เพื่อให้ HH อยู่ในช่วง 0 ถึง 23 และ MM จะอยู่ในช่วง 0 ถึง 59 เราต้องหาเวลาที่ใกล้เคียงที่สุดถัดไปคือ palindrome เมื่ออ่านเป็นสตริง หากไม่มีสตริงดังกล่าว ให้คืนค่า -1

ดังนั้น หากอินพุตเป็น "22:22" เอาต์พุตจะเป็น "23:32"

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • n :=ขนาดของ s

  • hour_string :=สตริงย่อยของ s[จากดัชนี 0 ถึง 2]

  • นาที :=สตริงย่อยของ s[จากดัชนี 3 เป็น 5] และแปลงเป็นจำนวนเต็ม

  • rev_hour :=ย้อนกลับ hour_string และแปลงเป็นตัวเลข

  • rev_hr_str :=กลับด้านของ hour_string

  • h :=hour_string เป็นจำนวนเต็ม

  • temp :=สตริงว่าง res :=สตริงว่าง

  • ถ้า h คือ 23 และนาที>=32 แล้ว

    • res :=-1

  • มิฉะนั้นเมื่อนาที

    • ถ้า h <10 แล้ว

      • อุณหภูมิ :="0"

    • temp :=temp concatenate h

    • ถ้า rev_hour <10 แล้ว

      • res :=res concatenate temp concatenate ":0" เชื่อม rev_hr_str

    • มิฉะนั้น

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

  • มิฉะนั้น

    • ชั่วโมง :=ชั่วโมง + 1

    • rev_hr_str :=กลับด้านของ h เป็นสตริง

    • rev_hour :=กลับด้านของ h

    • ถ้า h <10 แล้ว

      • อุณหภูมิ :="0"

    • temp :=temp concatenate h

    • ถ้า rev_hour <10 แล้ว

      • res :=res concatenate temp concatenate ":0" เชื่อม rev_hr_str

    • มิฉะนั้น

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

  • ผลตอบแทน

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

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