Menu
CoddyTech

Design Add and Search Words Data Structure

2つの操作を持つ単語辞書を作成します。addWord wは単語wを保存します。search pは、保存された単語の中にパターンpに一致するものがあるかどうかを判定します。一致するには長さが同じで、各位置でパターンが同じ文字または任意の1文字を表すドット.である必要があります。

操作iは、単語またはパターンwords[i]に対するops[i]です。空の辞書に対して順番に実行し、それぞれについて1つの文字列を返します。addWordには"null"、searchには"true"または"false"を返します。

関数

wordDictionaryOps(ops: string-array, words: string-array) → string-array
opsstring-array
操作が実行される順序
wordsstring-array
追加する単語または検索するパターン。1回の操作につき1つ。
戻り値string-array
操作ごとに1つの回答をテキストとして

制約

  • 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 が3文字目なので、..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"]