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ừ…
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ủ đề
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ừwordvào cây Trie.search(self, word: str) -> bool: Trả vềTruenế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ềTruenếu có bất kỳ từ nào trong Trie bắt đầu bằng chuỗiprefix, 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 TrueOutput
Thành công / Đáp ứng đầy đủ ràng buộcGiải thích
Dữ liệu kiểm thử mẫu và kết quả thực thi theo yêu cầu.
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.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
