Menu
CoddyTech

Design Add and Search Words Data Structure

두 가지 연산을 지원하는 단어 사전을 만드세요. addWord w는 단어 w를 저장합니다. search p는 저장된 단어 중 패턴 p와 일치하는 단어가 있는지 알려 줍니다. 길이가 같고, 각 위치에서 패턴이 같은 문자이거나 임의의 문자 하나를 나타내는 점 .이어야 합니다.

연산 i는 단어 또는 패턴 words[i]에 대한 ops[i]입니다. 빈 사전에서 연산을 순서대로 실행하고 각각에 대해 문자열 하나를 반환하세요. addWord에는 "null"을, search에는 "true" 또는 "false"를 반환합니다.

함수

wordDictionaryOps(ops: string-array, words: string-array) → string-array
opsstring-array
연산, 실행되는 순서대로
wordsstring-array
추가할 단어 또는 검색할 패턴(작업당 하나)
반환값string-array
연산마다 텍스트로 답 하나씩

제약 조건

  • 1 ≤ ops.length ≤ 2500
  • words.length == ops.length
  • 모든 ops[i]는 addWord 또는 search입니다.
  • 1 ≤ words[i].length ≤ 20
  • 추가할 단어에는 소문자 영어 알파벳만 포함됩니다.
  • 검색 패턴에는 소문자 영어 알파벳과 점이 최대 3개 포함됩니다.

예제

입력
ops = ["addWord", "addWord", "search", "search", "search", "search"]words = ["rose", "rise", "r.se", "ros", "rose.", "..s."]
출력
["null", "null", "true", "false", "false", "true"]
설명
r.se는 두 단어 모두와 일치합니다. 점은 rose의 o와 rise의 i를 나타냅니다. 점은 빠진 글자를 나타내지 않으므로 ros와 rose.는 일치하지 않습니다. 두 단어 모두 세 번째 글자가 s이므로 ..s.는 일치합니다.
challenge icon

후속 질문

패턴에 빈 문자열을 포함해 임의 개수의 문자를 나타내는 *도 포함될 수 있다면, search를 어떻게 확장하시겠습니까?

코드 초기화
def wordDictionaryOps(ops, words):
    # 여기에 코드를 작성하세요

테스트 #1

테스트 #2

테스트 #3

인자들

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

예상 출력

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