字典树的简单实现
此处假设只有26个英文字母, 且不区分大小写
public class TireTree {
private Node root;
public TireTree() {
this.root = new Node();
}
void add(String s){
Node p = root;
for (char c : s.toCharArray()){
if (p.children[c - 'a'] == null){
p.children[c - 'a'] = new Node();
}
p = p.children[c - 'a'];
}
p.isEnd = true;
}
//搜索是单词否存在
boolean search(String s) {
//p是节点指针,每次使用完之后就会将其移动到下一位
Node p = root;
for (char c : s.toCharArray()){
if (p.children[c - 'a'] == null){
return false;
}
p = p.children[c - 'a'];
}
return p.isEnd;
}
static class Node {
//是否是最后一个节点
boolean isEnd = false;
//此处假设只有26个英文字母,且不区分大小写
Node[] children = new Node[26];
}
}