LeetCode208 Implement Trie (Prefix Tree)
问题描述
Implement a trie with insert, search, and startsWith methods.
问题分析
问题描述很简单,就是写一个Trie树。至于Trie树是干什么的。前段时间刚好在做文本分词的时候研究过。大家可以去网上看一下。
因为这里题目进行了简化,只有a-z
这些字符,所以说可以用数组来代替Map对象。结果就是。
代码如下
Java代码
Node rootNode;
/** Initialize your data structure here. */
public Trie() {
this.rootNode = new Node();
}
/** Inserts a word into the trie. */
public void insert(String word) {
Node node = rootNode;
for (int i = 0; i < word.length(); i++) {
int index = word.charAt(i)-'a';
if(node.nextNodes[index]==null) node.nextNodes[index]=new Node();
node = node.nextNodes[index];
}
node.isEnd=true;
}
/** Returns if the word is in the trie. */
public boolean search(String word) {
Node node = rootNode;
for (int j = 0; j < word.length(); j++) {
int index = word.charAt(j)-'a';
if(node.nextNodes[index]==null) return false;
node = node.nextNodes[index];
}
return node.isEnd;
}
/** Returns if there is any word in the trie that starts with the given prefix. */
public boolean startsWith(String prefix) {
Node node = rootNode;
for (int j = 0; j < prefix.length(); j++) {
int index = prefix.charAt(j)-'a';
if(node.nextNodes[index]==null) return false;
node = node.nextNodes[index];
}
return true;
}
class Node{
boolean isEnd = false;
Node[] nextNodes = new Node[26];
}
}
LeetCode学习笔记持续更新
GitHub地址 https://github.com/yanqinghe/leetcode
CSDN博客地址 http://blog.csdn.net/yanqinghe123/article/category/7176678