前言
自己使用哈希表手实现了字典树的添加单词 addWord() 方法和查找单词最短前缀 searchPrefix() 方法.
此贴源于力扣第648题.单词替换
一、代码实现
class TrieNode{
char value;
boolean isEnd;
Map<Character, TrieNode> children;
public TrieNode(char value) {
this.value = value;
this.children = new HashMap<>();
}
}
class TrieTree{
TrieNode root;
public TrieTree() {
this.root = new TrieNode( ' ');
}
public void addWord(String word){
TrieNode cur = root;
for (char c : word.toCharArray()){
if (! cur.children.containsKey(c)){
cur.children.put(c, new TrieNode(c));
}
cur = cur.children.get(c);
}
cur.isEnd = true;
}
public int searchPrefix(String word){
TrieNode cur = root;
int len = 0;
for (char c : word.toCharArray()){
if (!cur.children.containsKey(c)){
break;
}else {
cur = cur.children.get(c);
len++;
if (cur.isEnd)
return len;
}
}
return -1;
}
}