题目链接:LeetCode208展开目录
题解展开目录
板子题
代码展开目录
- class Trie {
- class TrieNode {
- public int end;
- public TrieNode[] nexts;
- public TrieNode() {
- end = 0;
- nexts = new TrieNode[26];
- }
- }
- TrieNode root = new TrieNode();
-
- /** Initialize your data structure here. */
- public Trie() {}
-
- /** Inserts a word into the trie. */
- public void insert(String word) {
- if(word == null)
- return;
- char[] chs = word.toCharArray();
- TrieNode node = root;
- int index = 0;
- for(int i = 0;i < chs.length;i++) {
- index = chs[i] - 'a';
- if(node.nexts[index] == null)
- node.nexts[index] = new TrieNode();
- node = node.nexts[index];
- }
- node.end++;
- }
-
- /** Returns if the word is in the trie. */
- public boolean search(String word) {
- char chs[] = word.toCharArray();
- TrieNode node = root;
- int index = 0;
- for(int i = 0;i < chs.length;i++) {
- index = chs[i] - 'a';
- if(node.nexts[index] == null)
- return false;
- node = node.nexts[index];
- }
- return node.end > 0;
- }
-
- /** Returns if there is any word in the trie that starts with the given prefix. */
- public boolean startsWith(String prefix) {
- char[] chs = prefix.toCharArray();
- TrieNode node = root;
- int index = 0;
- for(int i = 0;i < chs.length;i++) {
- index = chs[i] - 'a';
- if(node.nexts[index] == null)
- return false;
- node = node.nexts[index];
- }
- return true;
- }
- }
-
- /**
- * Your Trie object will be instantiated and called as such:
- * Trie obj = new Trie();
- * obj.insert(word);
- * boolean param_2 = obj.search(word);
- * boolean param_3 = obj.startsWith(prefix);
- */