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

โปรแกรมหาเวลาที่ถูกต้องล่าสุดจากสตริงเวลาที่มี ? (Python)

โจทย์

มีสตริงเวลา hh:mm บางตัวเป็น ? (Hidden) ต้องแทนที่ ? ให้ได้เวลาที่ถูกต้อง ล่าสุด (Latest) ตามนาฬิกา 24 ชม. (00:00 - 23:59)

ตัวอย่าง: s = "1?:?5" → Output: "13:55"

อัลกอริธึม

  1. กำหนด Max Time Template: ['2','3',':','5','9']
  2. ปรับ Template: ถ้าชั่วโมง < 2 → นาทีสองหลักแรกเป็น 9; ถ้านาที 4-9 → ชั่วโมงหลักแรกเป็น 1
  3. วน Zip กับ Input: ถ้าเป็นตัวเลขเก็บไว้ ถ้าเป็น ? ใช้ค่าจาก Template

โค้ด Python


def solve(s):
    ans = []
    max_time = ['2','3',':','5','9']
    if max_time[0] < '2':
        max_time[1] = '9'
    if '9' >= max_time[1] > '3':
        max_time[0] = '1'
    for mx, digit in zip(max_time, s):
        if digit.isdigit():
            ans.append(digit)
        else:
            ans.append(mx)
    return ''.join(ans)

s = "1?:?5"
print(solve(s))  # Output: 13:55

Input / Output

Input:  "1?:?5"
Output: 13:55