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

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

หาเวลาปาลินโดรมถัดไปในรูปแบบ 24 ชั่วโมง

กำหนดเวลาในรูปแบบ HH:MM (00-23:00-59) ต้องการหาเวลาถัดไปที่อ่านเป็นพาลินโดรม (เช่น 22:22 → 23:32) หากไม่มีให้คืน -1

แนวคิด

เวลาปาลินโดรมในรูปแบบ HH:MM ต้องเป็นรูป AB:BA คือ นาทีต้องเป็นการกลับตัวเลขของชั่วโมง

  1. แยกชั่วโมง h และนาที m
  2. คำนวณ rev_h = int(str(h).zfill(2)[::-1]) (นาทีที่ทำให้เป็นพาลินโดรม)
  3. ถ้า m < rev_h และ rev_h < 60 → เวลาถัดไปคือ h:rev_h
  4. มิฉะนั้น เพิ่มชั่วโมง h+1 คำนวณ rev_h ใหม่ (ต้อง < 60)
  5. กรณีพิเศษ: 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