Giả sử ta có chuỗi s biểu diễn thời gian dạng hh:mm. Một số chữ số bị ẩn (biểu diễn bằng ?). Xét đồng hồ 24h, thời gian hợp lệ từ 00:00 đến 23:59. Ta phải tìm thời gian hợp lệ mới nhất có thể tạo được bằng cách thay thế các chữ số ẩn.
Ví dụ: s = "1?:?5", kết quả là 13:55.
Giải thuật
ans := []max_time := ['2','3',':','5','9']- Nếu
max_time[0] < '2':max_time[1] := '9' - Nếu
'9' >= max_time[1] > '3':max_time[0] := '1' - Với mỗi cặp
(mx, digit)từzip(max_time, s):- Nếu
digitlà chữ số: thêmdigitvàoans - Ngược lại: thêm
mxvàoans
- Nếu
- Nối các ký tự trong
ansvà trả về
Ví dụ (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))
Input
"1?:?5"
Output
13:55