Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình tìm thời gian hợp lệ mới nhất bằng cách thay thế chữ số ẩn trong Python

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

  1. ans := []
  2. max_time := ['2','3',':','5','9']
  3. Nếu max_time[0] < '2': max_time[1] := '9'
  4. Nếu '9' >= max_time[1] > '3': max_time[0] := '1'
  5. Với mỗi cặp (mx, digit) từ zip(max_time, s):
    • Nếu digit là chữ số: thêm digit vào ans
    • Ngược lại: thêm mx vào ans
  6. Nối các ký tự trong ans và 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