เมื่อได้รับสตริงเวลาในรูปแบบ HH:MM ที่บางตัวอักษรเป็น ? (ไม่ทราบค่า) เราต้องการแทนที่ ? เพื่อให้ได้เวลาที่ถูกต้องและเป็นเวลาที่มากที่สุด (Latest valid time) โดยพิจารณาข้อจำกัดของรูปแบบเวลา 24 ชั่วโมง
กฎการแทนที่
- ตำแหน่ง 0 (ชั่วโมงหลัก): ถ้าตัวถัดไปเป็น
?หรือ 0-3 ใช้2มิฉะนั้นใช้1 - ตำแหน่ง 1 (ชั่วโมงรอง): ถ้าตัวแรกเป็น
2ใช้3มิฉะนั้นใช้9 - ตำแหน่ง 3 (นาทีหลัก): ใช้
5เสมอ (นาทีสูงสุด 59) - ตำแหน่ง 4 (นาทีรอง): ใช้
9เสมอ
ตัวอย่างโค้ด
def find_latest_time(my_time):
my_time = list(my_time)
for i in range(len(my_time)):
if my_time[i] == "?":
if i == 0:
my_time[i] = "2" if my_time[i+1] in "?0123" else "1"
elif i == 1:
my_time[i] = "3" if my_time[0] == "2" else "9"
elif i == 3:
my_time[i] = "5"
else:
my_time[i] = "9"
print("".join(my_time))
my_str = '0?:?3'
print("The time is :")
print(my_str)
print("The latest valid time is : ")
find_latest_time(my_str)
ผลลัพธ์
The time is : 0?:?3
The latest valid time is : 09:53
คำอธิบาย
- แปลงสตริงเป็นลิสต์เพื่อแก้ไขตัวอักษรได้
- วนลูปตรวจสอบทุกตำแหน่งที่เป็น
? - ใช้เงื่อนไข
if-elifตามตำแหน่งเพื่อเลือกค่าสูงสุดที่ถูกต้อง - รวมลิสต์กลับเป็นสตริงและแสดงผล