其他分享
首页 > 其他分享> > 2022-4-7 高频面试题

2022-4-7 高频面试题

作者:互联网

208. 实现 Trie (前缀树)

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

请你实现 Trie 类:

 1 class Trie {
 2 
 3     private Node root;
 4 
 5     class Node{
 6         boolean isWord;
 7         TreeMap<Character,Node> next;
 8         Node(){
 9             this.isWord=false;
10             this.next=new TreeMap<>();
11         }
12     }
13 
14 
15     public Trie() {
16         root=new Node();
17     }
18     
19     public void insert(String word) {
20         Node cur=root;
21         for (int i=0;i<word.length();i++) {
22             char c=word.charAt(i);
23             if (cur.next.get(c)==null) {
24                cur.next.put(c,new Node());
25             }
26             cur=cur.next.get(c);
27         }
28         cur.isWord=true;
29     }
30     
31     public boolean search(String word) {
32         Node cur=root;
33         for (int i=0;i<word.length();i++) {
34             char c=word.charAt(i);
35             if (cur.next.get(c)==null) return false;
36             else cur=cur.next.get(c);
37         }
38         return cur.isWord;
39     }
40     
41     public boolean startsWith(String prefix) {
42         Node cur=root;
43         for (int i=0;i<prefix.length();i++) {
44             char c=prefix.charAt(i);
45             if (cur.next.get(c)==null) return false;
46             else cur=cur.next.get(c);
47         }
48         return cur.next!=null;
49     }
50 }
51 
52 
53 /**
54  * Your Trie object will be instantiated and called as such:
55  * Trie obj = new Trie();
56  * obj.insert(word);
57  * boolean param_2 = obj.search(word);
58  * boolean param_3 = obj.startsWith(prefix);
59  */

思路:可以只开26个数组来实现。也可以根节点加映射实现。

标签:Node,面试题,word,前缀,Trie,2022,false,高频,String
来源: https://www.cnblogs.com/benbicao/p/16113730.html