Menu
CoddyTech

Design Add and Search Words Data Structure

Construa um dicionário de palavras com duas operações. addWord w armazena a palavra w. search p informa se alguma palavra armazenada corresponde ao padrão p: mesmo comprimento e, em cada posição, o padrão contém a mesma letra ou um ponto ., que representa qualquer letra.

A operação i é ops[i] aplicada à palavra ou ao padrão words[i]. Execute-as em ordem em um dicionário vazio e retorne uma string para cada uma: "null" para um addWord, "true" ou "false" para uma search.

Função

wordDictionaryOps(ops: string-array, words: string-array) → string-array
opsstring-array
as operações, na ordem em que são executadas
wordsstring-array
a palavra a ser adicionada ou o padrão a ser pesquisado, um por operação
Retornastring-array
uma resposta por operação, como texto

Restrições

  • 1 ≤ ops.length ≤ 2500
  • words.length == ops.length
  • Cada ops[i] é addWord ou search.
  • 1 ≤ words[i].length ≤ 20
  • A palavra a ser adicionada contém apenas letras minúsculas do inglês.
  • Um padrão a ser pesquisado contém letras minúsculas do inglês e no máximo 3 pontos.

Exemplos

Entrada
ops = ["addWord", "addWord", "search", "search", "search", "search"]words = ["rose", "rise", "r.se", "ros", "rose.", "..s."]
Saída
["null", "null", "true", "false", "false", "true"]
Explicação
r.se corresponde às duas palavras: o ponto cobre o o de rose e o i de rise. Um ponto nunca representa uma letra ausente, então ros e rose. não correspondem. ..s. corresponde, pois ambas as palavras têm s na terceira posição.
challenge icon

Para ir além

Como você ampliaria search se um padrão também pudesse conter *, representando qualquer sequência de letras, inclusive uma vazia?

Redefinir código
def wordDictionaryOps(ops, words):
    # Escreva o código aqui

Teste #1

Teste #2

Teste #3

Argumentos

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

Saída Esperada

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