Menu
CoddyTech

Design Add and Search Words Data Structure

Trung bìnhTrieQuay luipython iconjava iconcpp iconc iconjs icon+10

Hãy xây dựng một từ điển từ gồm hai thao tác. addWord w lưu từ w. search p cho biết có từ nào đã lưu khớp với mẫu p hay không: các từ có cùng độ dài và tại mỗi vị trí, mẫu chứa cùng chữ cái hoặc dấu chấm ., đại diện cho một chữ cái bất kỳ.

Thao tác i là ops[i], áp dụng lên từ hoặc mẫu words[i]. Thực hiện các thao tác theo thứ tự trên một từ điển rỗng và trả về một chuỗi cho mỗi thao tác: "null" cho addWord, "true" hoặc "false" cho search.

Hàm

wordDictionaryOps(ops: string-array, words: string-array) → string-array
opsstring-array
các phép toán, theo thứ tự chúng chạy
wordsstring-array
từ cần thêm hoặc mẫu cần tìm kiếm, mỗi thao tác một từ hoặc mẫu
Trả vềstring-array
một câu trả lời cho mỗi phép toán, dưới dạng văn bản

Ràng buộc

  • 1 ≤ ops.length ≤ 2500
  • words.length == ops.length
  • Mỗi ops[i] là addWord hoặc search.
  • 1 ≤ words[i].length ≤ 20
  • Một từ cần thêm chỉ chứa các chữ cái tiếng Anh viết thường.
  • Mẫu cần tìm chứa các chữ cái tiếng Anh viết thường và tối đa 3 dấu chấm.

Ví dụ

Đầu vào
ops = ["addWord", "addWord", "search", "search", "search", "search"]words = ["rose", "rise", "r.se", "ros", "rose.", "..s."]
Đầu ra
["null", "null", "true", "false", "false", "true"]
Giải thích
r.se khớp với cả hai từ: dấu chấm khớp với chữ o trong rose và chữ i trong rise. Dấu chấm không bao giờ đại diện cho một chữ cái bị thiếu, vì vậy ros và rose. không khớp. ..s. khớp vì cả hai từ đều có chữ s ở vị trí thứ ba.
challenge icon

Câu hỏi mở rộng

Bạn sẽ mở rộng search như thế nào nếu một mẫu cũng có thể chứa *, đại diện cho bất kỳ dãy chữ cái nào, kể cả dãy rỗng?

Đặt lại code
def wordDictionaryOps(ops, words):
    # Viết code ở đây

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

ops = ["addWord", "addWord", "search", "search", "search", "search"]
words = ["rose", "rise", "r.se", "ros", "rose.", "..s."]

Đầu ra mong đợi

["null", "null", "true", "false", "false", "true"]