Implement Trie (Prefix Tree)
来源:互联网 发布:sql一次insert多行 编辑:程序博客网 时间:2024/04/28 12:13
Implement a trie with insert, search, and startsWith methods.
trie树,又叫字典树,单词查找树。
它有三个特性:根节点不包含字符,除根节点外每一个节点都只包含一个字符;
从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串;
每个节点的所有子节点包含的字符都不相同。
一个trie node应该包括它的character,它的children和是否是叶结点。
所以先定义TrieNode:
class TrieNode { // Initialize your data structure here. char c; HashMap<Character, TrieNode> children = new HashMap<Character, TrieNode>(); boolean isLeaf; public TrieNode(char c){ this.c = c; } public TrieNode() { }}
然后是Trie类,可以实现插入,查找单词(isLeaf=true),查找前缀的操作。
public class Trie { private TrieNode root; public Trie() { root = new TrieNode(); } // Inserts a word into the trie. public void insert(String word) { HashMap<Character,TrieNode> children=root.children; for(int i=0;i<word.length();i++){ char c=word.charAt(i); TrieNode t; if(children.containsKey(c)){ t=children.get(c); }else{ t=new TrieNode(c); children.put(c,t); } children=t.children; if(i==word.length()-1) t.isLeaf=true; } } // Returns if the word is in the trie. public boolean search(String word) { TrieNode t=findNode(word); if(t!=null&&t.isLeaf) return true; else return false; } // Returns if there is any word in the trie // that starts with the given prefix. public boolean startsWith(String prefix) { if(findNode(prefix)==null) return false; else return true; } private TrieNode findNode(String s){ HashMap<Character,TrieNode> children=root.children; TrieNode t=null; for(int i=0;i<s.length();i++){ char c=s.charAt(i); if(children.containsKey(c)){ t=children.get(c); children=t.children; }else return null; } return t; }}// Your Trie object will be instantiated and called as such:// Trie trie = new Trie();// trie.insert("somestring");// trie.search("key");
0 0
- Implement Trie (Prefix Tree)
- Implement Trie (Prefix Tree)
- Implement Trie (Prefix Tree)
- Implement Trie (Prefix Tree)
- Implement Trie (Prefix Tree)
- Implement Trie (Prefix Tree)
- Implement Trie (Prefix Tree)
- Implement Trie (Prefix Tree)
- Implement Trie (Prefix Tree)
- Implement Trie (Prefix Tree)
- Implement Trie (Prefix Tree)
- Implement Trie (Prefix Tree)
- Implement Trie (Prefix Tree)
- Implement Trie (Prefix Tree)
- Implement Trie (Prefix Tree)
- Implement Trie (Prefix Tree)
- Implement Trie (Prefix Tree)
- Implement Trie (Prefix Tree)
- Android:The connection to adb is down, and a severe error has occured错误解决
- HDU 1874 畅通工程续【最短路 dijkstra & floyed & SPFA 】
- c# ComboBox简单用法
- GDOI模拟 蜘蛛侠
- 重拾SFM、3D reconstruction
- Implement Trie (Prefix Tree)
- 一定要注意特殊情况!!!POJ1845
- Borg论文翻译 以及部分理解
- MyEclipse 快捷键
- 【重新学习ThinkPHP】记录点滴
- Unable to locate Spring NamespaceHandler for XML schema namespace [http://cxf.apache.org/jaxws]
- poj2454--Jersey Politics(随机化算法)
- 3
- Android动画学习笔记-Android Animation