class TrieNode {
public boolean isWord;
public TrieNode[] next;
public TrieNode() {
isWord = false;
next = new TrieNode[26];
}
}
public class Trie {
private TrieNode root;
public Trie() {
root = new TrieNode();
}
public void insert(String word) {
TrieNode p = root;
for (char c : word.toCharArray()) {
int idx = c - 'a';
if (p.next[idx] == null) {
p.next[idx] = new TrieNode();
}
p = p.next[idx];
}
p.isWord = true;
}
public boolean search(String word) {
TrieNode p = root;
for (char c : word.toCharArray()) {
int idx = c - 'a';
if (p.next[idx] == null) {
return false;
}
p = p.next[idx];
}
return p.isWord;
}
public boolean startsWith(String prefix) {
TrieNode p = root;
for (char c : prefix.toCharArray()) {
int idx = c - 'a';
if (p.next[idx] == null) {
return false;
}
p = p.next[idx];
}
return true;
}
}
前缀树,Trie树
最新推荐文章于 2023-12-01 21:04:47 发布