Menu
CoddyTech

Implement Trie (Prefix Tree)

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

소문자 단어를 위한 트라이(접두사 트리)를 만들고 세 가지 연산을 구현하세요. insert w는 단어 w를 추가하고, search w는 w 자체가 삽입되었는지 알려 주며, startsWith p는 삽입된 단어 중 p로 시작하는 단어가 있는지 알려 줍니다. 단어는 자기 자신의 접두사로 간주됩니다.

연산 i는 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"]
설명
car는 card로 시작하므로 startsWith car는 "true"이지만, car는 삽입된 적이 없으므로 첫 번째 검색 결과는 "false"입니다. insert car를 실행한 후에는 검색으로 찾을 수 있습니다.
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"]