File tree Expand file tree Collapse file tree 1 file changed +88
-0
lines changed Expand file tree Collapse file tree 1 file changed +88
-0
lines changed Original file line number Diff line number Diff line change 1+ class TrieNode {
2+ private Map <Character , TrieNode > children ;
3+ private boolean isWord ;
4+
5+ public TrieNode () {
6+ children = new HashMap <>();
7+ isWord = false ;
8+ }
9+
10+ public boolean isWord () {
11+ return isWord ;
12+ }
13+
14+ public void isFullWord () {
15+ isWord = true ;
16+ }
17+
18+ public void putCharIfAbsent (char c ) {
19+ children .putIfAbsent (c , new TrieNode ());
20+ }
21+
22+ public TrieNode getChild (char c ) {
23+ return children .get (c );
24+ }
25+ }
26+
27+ class Trie {
28+ private TrieNode root ;
29+
30+ /** Initialize your data structure here. */
31+ public Trie () {
32+ root = new TrieNode ();
33+ }
34+
35+ /** Inserts a word into the trie. */
36+ public void insert (String word ) {
37+ if (word == null ) {
38+ return ;
39+ }
40+
41+ TrieNode curr = root ;
42+ for (char c : word .toCharArray ()) {
43+ curr .putCharIfAbsent (c );
44+ curr = curr .getChild (c );
45+ }
46+
47+ curr .isFullWord ();
48+ }
49+
50+ /** Returns if the word is in the trie. */
51+ public boolean search (String word ) {
52+ if (word == null ) {
53+ return false ;
54+ }
55+
56+ TrieNode curr = root ;
57+
58+ for (char c : word .toCharArray ()) {
59+ curr = curr .getChild (c );
60+
61+ if (curr == null ) {
62+ return false ;
63+ }
64+ }
65+
66+ return curr .isWord ();
67+ }
68+
69+ /**
70+ * Returns if there is any word in the trie that starts with the given prefix.
71+ */
72+ public boolean startsWith (String prefix ) {
73+ if (prefix == null ) {
74+ return false ;
75+ }
76+
77+ TrieNode curr = root ;
78+
79+ for (char c : prefix .toCharArray ()) {
80+ curr = curr .getChild (c );
81+ if (curr == null ) {
82+ return false ;
83+ }
84+ }
85+
86+ return true ;
87+ }
88+ }
You can’t perform that action at this time.
0 commit comments