File tree Expand file tree Collapse file tree 1 file changed +55
-0
lines changed Expand file tree Collapse file tree 1 file changed +55
-0
lines changed Original file line number Diff line number Diff line change
1
+ package com .gatsby ;
2
+
3
+ /**
4
+ * @author -- gatsby
5
+ * @date -- 2022/7/12
6
+ * @description --
7
+ */
8
+
9
+
10
+ public class _208ImplementTrie {
11
+ class TrieNode {
12
+ boolean isEnd = false ;
13
+ // 直接创建一个26字母的数组,这样已经可以考虑到所有的下一位字母的情况
14
+ TrieNode [] children = new TrieNode [26 ];
15
+ }
16
+
17
+ private TrieNode root ;
18
+
19
+ public _208ImplementTrie () {
20
+ root = new TrieNode ();
21
+ }
22
+
23
+ public void insert (String word ) {
24
+ TrieNode p = root ;
25
+ for (int i = 0 ; i < word .length (); ++i ) {
26
+ int letter = word .charAt (i ) - 'a' ;
27
+ if (p .children [letter ] == null ) {
28
+ p .children [letter ] = new TrieNode ();
29
+ }
30
+ p = p .children [letter ];
31
+ }
32
+ // 此时在最后一个字母,将isEnd置为true
33
+ p .isEnd = true ;
34
+ }
35
+
36
+ public boolean search (String word ) {
37
+ TrieNode p = root ;
38
+ for (int i = 0 ; i < word .length (); ++i ) {
39
+ int letter = word .charAt (i ) - 'a' ;
40
+ if (p .children [letter ] == null ) return false ;
41
+ else p = p .children [letter ];
42
+ }
43
+ return p .isEnd ;
44
+ }
45
+
46
+ public boolean startsWith (String prefix ) {
47
+ TrieNode p = root ;
48
+ for (int i = 0 ; i < prefix .length (); ++i ) {
49
+ int letter = prefix .charAt (i ) - 'a' ;
50
+ if (p .children [letter ] == null ) return false ;
51
+ else p = p .children [letter ];
52
+ }
53
+ return true ;
54
+ }
55
+ }
You can’t perform that action at this time.
0 commit comments