หาเวลาปาลินโดรมถัดไปในรูปแบบ 24 ชั่วโมง
กำหนดเวลาในรูปแบบ HH:MM (00-23:00-59) ต้องการหาเวลาถัดไปที่อ่านเป็นพาลินโดรม (เช่น 22:22 → 23:32) หากไม่มีให้คืน -1
แนวคิด
เวลาปาลินโดรมในรูปแบบ HH:MM ต้องเป็นรูป AB:BA คือ นาทีต้องเป็นการกลับตัวเลขของชั่วโมง
- แยกชั่วโมง
hและนาทีm - คำนวณ
rev_h = int(str(h).zfill(2)[::-1])(นาทีที่ทำให้เป็นพาลินโดรม) - ถ้า
m < rev_hและrev_h < 60→ เวลาถัดไปคือh:rev_h - มิฉะนั้น เพิ่มชั่วโมง
h+1คำนวณrev_hใหม่ (ต้อง < 60) - กรณีพิเศษ:
23:32เป็นเวลาสุดท้าย ถ้าผ่านแล้ว →-1
โค้ดตัวอย่าง Python
def get_next_palindrome_time(s):
h = int(s[:2])
m = int(s[3:])
rev_h = int(str(h).zfill(2)[::-1])
rev_h_str = str(h).zfill(2)[::-1]
if h == 23 and m >= 32:
return "-1"
if m < rev_h and rev_h < 60:
return f"{h:02d}:{rev_h:02d}"
h += 1
if h == 24:
return "-1"
rev_h = int(str(h).zfill(2)[::-1])
if rev_h < 60:
return f"{h:02d}:{rev_h:02d}"
return "-1"
print(get_next_palindrome_time("22:22")) # 23:32
print(get_next_palindrome_time("23:32")) # -1