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

Chương trình kiểm tra tính hợp lệ của danh sách đơn hàng giao nhận Python

Cho danh sách orders, mỗi phần tử bắt đầu bằng 'P' (lấy hàng) hoặc 'D' (giao hàng) theo sau ID đơn hàng. Kiểm tra tính hợp lệ:

  • Không giao trước khi lấy
  • Mọi đơn lấy phải được giao
  • Không lấy/giao trùng lặp đơn đã hoàn tất

Ví dụ: orders=["P1","D1","P2","P3","D3","D2"] → True.

Giải thuật (Theo dõi trạng thái đơn hàng)

  1. Kiểm tra trùng lặp trong orders
  2. Duyệt orders:
    • 'P': đánh dấu đơn hàng = 1 (đã lấy, chưa giao)
    • 'D': nếu đơn chưa lấy → False; nếu đã lấy → giảm trạng thái về 0
  3. Cuối cùng: tất cả trạng thái phải = 0

Ví dụ triển khai

def solve(orders):
    status = {}
    if len(set(orders)) != len(orders):
        return False
    for order in orders:
        if order[0] == "P":
            status[order[1:]] = 1
        elif order[0] == "D":
            if order[1:] not in status:
                return False
            status[order[1:]] -= 1
    return sum(status.values()) == 0

print(solve(["P1", "D1", "P2", "P3", "D3", "D2"]))

Đầu vào

["P1", "D1", "P2", "P3", "D3", "D2"]

Đầu ra

True