442
来源:互联网 发布:银天下交易软件 编辑:程序博客网 时间:2024/06/03 22:00
2017.9.4
这个学期重新开始刷题啊,一定要坚持下去啊。
首先知道什么是Trie,是一种新的树形结构,通常用来存储字符串。
在TrieNode这个节点中,exist这个变量用来判断是不是字符串的结尾,以此来判断是存在这个字符串,还是仅仅只是startwith。这一点是我最开始没有想到的。
剩下的就是一个字符一个字符的遍历过程了。
收获就是:
知道Trie的定义和结构。
使用exist来判断字符串是不是存在。
/** * Your Trie object will be instantiated and called as such: * Trie trie = new Trie(); * trie.insert("lintcode"); * trie.search("lint"); will return false * trie.startsWith("lint"); will return true */class TrieNode { // Initialize your data structure here. char ch; boolean exit = false;public TrieNode() { }public TrieNode(char ch){this.ch = ch;}TrieNode[] children; }public class Trie { private TrieNode root; public Trie() { root = new TrieNode(); } // Inserts a word into the trie. public void insert(String word) { if(word == null || word.length() == 0){ return; } word = word.toLowerCase(); TrieNode pre = root; for(int i = 0; i < word.length();i++){ int index = word.charAt(i) - 'a'; if(pre.children == null){ pre.children = new TrieNode[26]; } if(pre.children[index] == null){ pre.children[index] = new TrieNode(word.charAt(i)); } if(i == word.length() -1){ pre.children[index].exit = true; } pre = pre.children[index]; } } // Returns if the word is in the trie. public boolean search(String word) { if(word == null || word.length() == 0){ return false; } word = word.toLowerCase(); int length = word.length(); TrieNode pre = root; for(int i = 0; i < length; i++){ if(pre == null){ return false; } int index = word.charAt(i) - 'a'; if(pre.children == null || pre.children[index] == null){ return false; } if(i == word.length() - 1 && pre.children[index].exit == false){ return false; } pre = pre.children[index]; } return true; } // Returns if there is any word in the trie // that starts with the given prefix. public boolean startsWith(String prefix) { if(prefix == null || prefix.length() == 0){ return false; } prefix = prefix.toLowerCase(); int length = prefix.length(); TrieNode pre = root; for(int i = 0; i < prefix.length(); i++){ if(pre == null){ return false; } int index = prefix.charAt(i) - 'a'; if(pre.children == null || pre.children[index] == null){ return false; } pre = pre.children[index]; } return true; }}
阅读全文
0 0
- 442
- 442
- SRM 442
- uva 442
- UVA 442
- uva 442
- uva 442
- uva 442
- ocp-442
- uva 442
- UVA - 442
- UVA 442
- 442C
- UVA 442
- UVA 442
- 442 - Matrix Chain Multiplication***
- 442 - Matrix Chain Multiplication
- 442 - Matrix Chain Multiplication
- [LWIP学习]--SylixOS AF_UNIX socket套接字分析
- Android异常记录
- Spring及SpringBoot @Async配置步骤及注意事项
- 微信小程序豆瓣电影实例源码下载
- phpstudy本地测试出现nginx502
- 442
- Linux内核进程
- Android关于try catch的想法
- ie json未定义
- 矩阵乘法
- 线程方面面试问题总结
- Android中WebViewJavascriptBridge实现JS与java安全交互
- 汇总
- Android消息传递之组件间传递消息