สมมติว่าเรามีสตริง s แทนเวลาในรูปของ hh:mm ตัวเลขบางตัวใน s ถูกซ่อนไว้ (แสดงโดย ?) เมื่อพิจารณาจากนาฬิกา 24 ชั่วโมง เวลาที่ถูกต้องคือระหว่าง 00:00 น. ถึง 23:59 น. เราต้องหาเวลาที่ถูกต้องล่าสุดที่เราได้จากเวลาโดยแทนที่ตัวเลขที่ซ่อนอยู่
ดังนั้น หากอินพุตเป็นแบบ s="1?:?5" ดังนั้นเอาต์พุตจะเป็น 13:55 เนื่องจากชั่วโมงล่าสุดที่ขึ้นต้นด้วยหลัก '2' คือ 23 และนาทีสุดท้ายที่ลงท้ายด้วยหลัก '0' คือ 50.
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
ans :=รายการใหม่
-
max_time :=['2','3',':','5','9']
-
ถ้า max_time[0] <'2' แล้ว
-
max_time[1] :='9'
-
-
ถ้า '9'>=max_time[1]> '3' แล้ว
-
max_time[0] :='1'
-
-
สำหรับแต่ละคู่ (mx, หลัก) จาก (max_time, s) ทำ
-
ถ้าหลักเป็นตัวเลขเดียว
-
ใส่ตัวเลขต่อท้าย ans
-
-
มิฉะนั้น
-
ใส่ mx ต่อท้าย ans
-
-
-
รวมอักขระที่มีอยู่ใน ans และส่งคืน
ตัวอย่าง (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))
อินพุต
"1?:?5"
ผลลัพธ์
13:55