class TrieNode {
constructor(data){
this.data = data
this.children = new Array(26)
this.isEndingChar = false
this.text = ''
}
}
class TrieTree {
constructor(){
this.root = new TrieNode('/')
}
insert(text){
let currentNode = this.root
for(let char of text){
let index = char.charCodeAt() - 'a'.charCodeAt()
if(!currentNode.children[index]){
currentNode.children[index] = new TrieNode(char)
}
currentNode = currentNode.children[index]
}
currentNode.isEndingChar = true
currentNode.text = text
}
find(text){
let currentNode = this.root
for(let char of text){
let index = char.charCodeAt() - 'a'.charCodeAt()
if(currentNode.children[index]){
currentNode = currentNode.children[index]
} else {
return {
input:text,
result: false
}
}
}
return {
input:currentNode.text,
result:currentNode.isEndingChar
}
}
}
let tree = new TrieTree()
let strs = ["how", "hi", "her", "hello", "so", "see"];
for(let str of strs) {
tree.insert(str);
}
for(let str of strs) {
console.log(tree.find(str));
}
console.log(tree.find('world'));