class Trie {
Trie[] chileren;
boolean isExist;
public Trie() {
chileren = new Trie[26];
isExist = false;
}
public void insert(String word) {
Trie node = this;
for(int i=0;i<word.length();i++){
char c = word.charAt(i);
int index = c - 'a';
if(node.chileren[index] == null){
node.chileren[index] = new Trie();
}
node = node.chileren[index];
}
node.isExist = true;
}
public boolean search(String word) {
Trie node = searchWorld(word);
return node!=null && node.isExist;
}
public boolean startsWith(String prefix) {
return searchWorld(prefix)!=null;
}
private Trie searchWorld(String str){
Trie node = this;
for(int i=0;i<str.length();i++){
char c = str.charAt(i);
int index = c-'a';
if(node.chileren[index]==null){
return null;
}
node = node.chileren[index];
}
return node;
}
}