208. 实现Trie(前缀树)
又是一个自己建类去实现 但是真的挺神奇的
题目:


题解:
java
class TrieNode {
Map<Character, TrieNode> children = new HashMap<>();
boolean isEnd = false; // 标记是否为完整单词
}
class Trie {
private TrieNode root;
public Trie() {
root = new TrieNode();
}
public void insert(String word) {
TrieNode node = root;
for (char c : word.toCharArray()) {
node.children.putIfAbsent(c, new TrieNode());
node = node.children.get(c);
}
node.isEnd = true; // 标记结束
}
public boolean search(String word) {
TrieNode node = find(word);
return node != null && node.isEnd; // 必须是完整单词
}
public boolean startsWith(String prefix) {
return find(prefix) != null; // 只要前缀存在即可
}
private TrieNode find(String prefix) {
TrieNode node = root;
for (char c : prefix.toCharArray()) {
if (!node.children.containsKey(c)) {
return null;
}
node = node.children.get(c);
}
return node;
}
}