Menu
CoddyTech

Implement Trie (Prefix Tree)

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

トライ(プレフィックス木)は、単語の先頭に関する判定を高速に行えるように単語を格納します。小文字の単語を対象に、次の3つの操作を実装してください。insert wは単語wを追加し、search wはw自体が挿入されているかどうかを判定し、startsWith pは挿入された単語のいずれかがpで始まるかどうかを判定します。単語はそれ自体のプレフィックスでもあります。

操作は順番にopsとして与えられ、words[i]はops[i]に対応する単語またはプレフィックスです。空の状態で始まる1つのトライに対して操作を実行し、各操作につき1つの文字列を返してください。挿入の場合は"null"、検索または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"]
説明
最初に格納されているのは card だけなので、car を検索すると "false" が返されます。単語として挿入されたことはないからです。これは card の先頭部分なので、startsWith car は "true" を返します。car が挿入されると、検索で見つかります。

lock icon提出時に隠しテスト+16件

challenge icon

発展問題

異なる保存済み単語のうち、pで始まるものの数をO(L)時間で返す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"]