Menu
CoddyTech

Implement Trie (Prefix Tree)

보통트라이python iconjava iconcpp iconc iconjs icon+10

트라이 또는 접두사 트리는 단어의 시작 부분에 관한 질문에 빠르게 답할 수 있도록 단어를 저장합니다. 소문자 단어를 위한 트라이를 만들고 세 가지 연산을 지원하세요. insert w는 단어 w를 추가하고, search w는 w 자체가 추가되었는지 알려 주며, startsWith p는 추가된 단어 중 p로 시작하는 단어가 있는지 알려 줍니다. 단어는 자기 자신의 접두사로 간주됩니다.

연산은 순서대로 ops로 주어지고, words[i]는 ops[i]에 해당하는 단어 또는 접두사입니다. 처음에 비어 있는 하나의 트라이에서 연산을 실행하고, 연산마다 문자열 하나를 반환하세요. 삽입의 경우 "null"을, 검색이나 startsWith의 경우 "true" 또는 "false"를 반환합니다.

함수

trieOps(ops: string-array, words: string-array) → string-array
opsstring-array
연산이 실행되는 순서대로
wordsstring-array
각 연산을 나타내는 단어 또는 접두사
반환값string-array
연산마다 하나의 답변을 텍스트로

제약 조건

  • 1 ≤ ops.length ≤ 2000
  • words.length == ops.length
  • 각 ops[i]는 insert, search 또는 startsWith입니다.
  • 1 ≤ words[i].length ≤ 20
  • words[i]에는 소문자 영어 알파벳만 들어 있습니다.

예제

입력
ops = ["insert", "search", "startsWith", "insert", "search"]words = ["card", "car", "car", "car", "car"]
출력
["null", "false", "true", "null", "true"]
설명
처음에는 card만 저장되어 있으므로 car를 검색하면 "false"가 반환됩니다. car는 단어로 삽입된 적이 없습니다. card의 시작 부분이므로 startsWith car는 "true"를 반환합니다. car를 삽입하면 검색에서 찾을 수 있습니다.

lock icon제출 시 숨은 테스트 +16개

challenge icon

후속 질문

여전히 O(L) 시간 내에, p로 시작하는 서로 다른 저장된 단어의 개수를 반환하는 countPrefix p 연산을 어떻게 추가할 수 있을까요?

코드 초기화
def trieOps(ops, words):
    # 여기에 코드를 작성하세요
테스트 케이스

케이스 1

케이스 2

케이스 3

입력

ops = ["insert", "search", "startsWith", "insert", "search"]
words = ["card", "car", "car", "car", "car"]

기대값

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