Menu
CoddyTech

Implement Trie (Prefix Tree)

ふつうトライ木python iconjava iconcpp iconc iconjs icon+10

小文字の単語を扱うトライ(プレフィックスツリー)を作成し、3つの操作を実装します。insert w は単語 w を追加し、search w は w 自体が追加済みかどうかを判定し、startsWith p は追加済みの単語のうち p で始まるものがあるかどうかを判定します。単語はそれ自身のプレフィックスでもあります。

操作 i は、words[i] に対する ops[i] です。空のトライに対して順番に実行し、それぞれ1つの文字列を返します。insert の場合は "null"、search または startsWith の場合は "true" または "false" を返します。

関数

trieOps(ops: string-array, words: string-array) → string-array
opsstring-array
操作が実行される順序
wordsstring-array
各操作を表す語または接頭辞
戻り値string-array
各操作につき1つの回答をテキストで

制約

  • 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"]