208. Implement Trie (Prefix Tree)
2016-07-28 09:01
369 查看
trie树的实现
class TrieNode { //注意trie树类的成员变量 // Initialize your data structure here. public char val; //如果这里改成private char val 那么下面的node.val 无法使用 public boolean isWord; public TrieNode[] children=new TrieNode[26]; public TrieNode() { } TrieNode(char c){ TrieNode node=new TrieNode(); node.val=c; } } public class Trie { private TrieNode root; public Trie() { root = new TrieNode(); root.val=' '; } // Inserts a word into the trie. public void insert(String word) { TrieNode ws=root; for(int i=0;i<word.length();i++){ char c=word.charAt(i); if(ws.children[c-'a']==null){ ws.children[c-'a']=new TrieNode(c); } ws=ws.children[c-'a']; } ws.isWord=true; } // Returns if the word is in the trie. public boolean search(String word) { TrieNode ws=root; for(int i=0;i<word.length();i++){ char c=word.charAt(i); if(ws.children[c-'a']==null) return false; ws=ws.children[c-'a']; } return ws.isWord; } // Returns if there is any word in the trie // that starts with the given prefix. public boolean startsWith(String prefix) { TrieNode ws=root; for(int i=0;i<prefix.length();i++){ char c=prefix.charAt(i); if(ws.children[c-'a']==null) return false; ws=ws.children[c-'a']; } return true; } } // Your Trie object will be instantiated and called as such: // Trie trie = new Trie(); // trie.insert("somestring"); // trie.search("key");
相关文章推荐
- The C++ Programming Language
- UVA 1400 Ray, Pass me the dishes!
- [HDU5727] Necklace [2016 Multi-University Training Contest 1(2016多校联合训练1) E]
- 六款值得推荐的android(安卓)开源框架简介
- H5页面调用拍照上传图片
- JVM 年轻代和年老代 大小设置
- Rookey.Frame之实体表单验证
- enumerate 枚举
- 简单介绍java Enumeration
- ScrollView 嵌套 ListView GridView
- osg创建非凸多边形
- Java对文件的读、写随机访问,RandomAccessFile类的使用分析
- Golang通关初级(4)
- jq 获取元素的宽度时,如何取得小数部分
- 电影票在线选座
- SDUT3329顺序表应用5:有序顺序表归并
- STM32学习笔记:gps两种解码的方式
- tomcat配置文件server.xml详解
- php中创建文件函数tempnam()与tmpfile()区别
- SpringBootHowTo 有许多spring boot下的常用问题及解答列表