python-024Đọc toàn bộ đề miễn phí

Cây tiền tố Trie phục vụ tìm kiếm và gợi ý từ

Hệ thống thanh tìm kiếm khóa học và tài liệu của AI Empire Academy cần một động cơ gợi ý từ (autocomplete) tốc độ cao. Khi học viên gõ từng ký tự, hệ thống phải kiểm tra xem có từ…

PythonNâng cao25 phút

Tiến độ của tôi ở bài này

Điểm được lưu vào tài khoản sau khi chấm bài.

Đang tải điểm của bạn…

Kiến thức và chủ đề

triedata structuresprefix searchtrees

Kiến thức tiên quyết: trie node, dictionaries, oop.

Nội dung đề bài

Mục tiêu kiến thức

  • Cài đặt Cấu trúc dữ liệu Cây tiền tố (Trie / Prefix Tree).
  • Phân biệt giữa tiền tố (prefix) và từ hoàn chỉnh (is_end_of_word).
  • Đạt độ phức tạp thời gian O(L) cho mọi thao tác thêm và tìm kiếm với L là độ dài từ.

Mô tả bài toán

Hệ thống thanh tìm kiếm khóa học và tài liệu của AI Empire Academy cần một động cơ gợi ý từ (autocomplete) tốc độ cao. Khi học viên gõ từng ký tự, hệ thống phải kiểm tra xem có từ nào bắt đầu bằng tiền tố đó hay không trong thời gian dưới 1 mili-giây.

Hãy xây dựng lớp PrefixTrie với các phương thức sau:

  • __init__(self): Khởi tạo cây Trie rỗng.
  • insert(self, word: str) -> None: Thêm một từ word vào cây Trie.
  • search(self, word: str) -> bool: Trả về True nếu từ word đã được thêm vào Trie và là một từ hoàn chỉnh, ngược lại trả về False.
  • starts_with(self, prefix: str) -> bool: Trả về True nếu có bất kỳ từ nào trong Trie bắt đầu bằng chuỗi prefix, ngược lại trả về False.

Quy tắc:

  • Các chuỗi chỉ chứa chữ cái tiếng Anh thường a-z.
  • Chuỗi rỗng "": starts_with("") luôn trả về True.

Input

Các lệnh gọi phương thức trên đối tượng PrefixTrie.

Output

Kết quả boolean tương ứng của search và starts_with.

Ràng buộc

  • Độ dài mỗi từ 1 ≤ |word| ≤ 2000.
  • Tổng số lượng từ thêm vào: tối đa 104 từ.
  • Thời gian chạy tối đa: 1000ms.
  • Giới hạn bộ nhớ: 256MB.

Ví dụ 1

Input

trie = PrefixTrie()
trie.insert("apple")
trie.search("apple")   # Tra ve True
trie.search("app")     # Tra ve False (vi "app" moi la tien to, chua hoan thanh)
trie.starts_with("app") # Tra ve True
trie.insert("app")
trie.search("app")     # Tra ve True

Output

Thành công / Đáp ứng đầy đủ ràng buộc

Giải thích

Dữ liệu kiểm thử mẫu và kết quả thực thi theo yêu cầu.

3 cấp độ gợi ýMở dần khi bạn thật sự cần hỗ trợ.
Phân tích lời giảiGiải thích hướng tư duy và thuật toán.
Code tham khảoDùng để đối chiếu sau khi tự làm.

Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.