#P4069. 实现Trie(前缀树)

实现Trie(前缀树)

题目内容

TrieTrie(发音类似 "trytry")或者说前缀树是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补全和拼写检查。

请你实现 Trie 类:

  • Trie()Trie() 初始化前缀树对象。
  • void insert(String word)void~ insert(String ~word) 向前缀树中插入字符串 wordword
  • boolean search(String word)boolean ~search(String~ word) 如果字符串 wordword 在前缀树中,返回 truetrue(即,在检索之前已经插入);否则,返回 falsefalse
  • boolean startsWith(String prefix)boolean~ startsWith(String ~prefix)如果之前已经插入的字符串 wordword 的前缀之一为 prefixprefix ,返回 truetrue ;否则,返回 falsefalse

输入描述

  • 第一行输入一个整数 n,表示操作的次数。
  • 接下来 n 行,每行包含一个操作:
    • "insert word":插入 word。
    • "search word":查询 word 是否存在,输出 true 或 false。
    • "startsWith prefix":查询是否存在以 prefix 为前缀的字符串,输出 true 或 false。

输出描述

对于 search 和 startsWith 操作,输出 true 或 false,其余操作不输出

样例1

输入

6
insert apple
search apple
search app
startsWith app
insert app
search app

输出

true
false
true
true

说明

Trie trie=new Trie();Trie\ trie = new\ Trie();

trie.insert("apple");trie.insert("apple");

trie.search("apple");trie.search("apple"); // 返回 True返回\ True

trie.search("app");trie.search("app"); // 返回 False返回\ False

trie.startsWith("app");trie.startsWith("app"); // 返回 True返回\ True

trie.insert("app");trie.insert("app");

trie.search("app");trie.search("app"); // 返回 True

提示:

  • 1<=word.length,prefix.length<=20001 <= word.length, prefix.length <= 2000
  • wordwordprefixprefix仅由小写英文字母组成
  • insertinsertsearchsearchstartsWithstartsWith调用次数总计不超过 31043 * 10^4