leetcode 211. Add and Search Word
来源:互联网 发布:衣锦夜行的燕公子知乎 编辑:程序博客网 时间:2024/05/21 22:55
Design a data structure that supports the following two operations:
void addWord(word)
bool search(word)
search(word) can search a literal word or a regular expression string containing only letters a-z or .. A . means it can represent any one letter.
For example:
addWord(“bad”)
addWord(“dad”)
addWord(“mad”)
search(“pad”) -> false
search(“bad”) -> true
search(“.ad”) -> true
search(“b..”) -> true
这道题和leetcode 208. Implement Trie (Prefix Tree) 字典树的构造 基本一样,不过在搜索的过程中使用了DFS深度优先遍历,字典树应该记住。
代码如下:
public class WordDictionary { private TrieNode root = new TrieNode(); public void addWord(String word) { Map<Character, TrieNode> children = root.children; for(int i=0; i<word.length(); i++) { char c = word.charAt(i); TrieNode t=null; 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.leaf=true; } } public boolean search(String word) { return searchNode(word, root); } /* * 递归搜索 * * */ public boolean searchNode(String word, TrieNode tn) { if(tn==null) return false; if(word.length() == 0 ) return tn.leaf; Map<Character, TrieNode> children = tn.children; TrieNode t = null; char c = word.charAt(0); if(c=='.') { for(char key : children.keySet() ) { if(searchNode(word.substring(1), children.get(key) )) return true; } return false; } else if(!children.containsKey(c)) return false; else { t = children.get(c); return searchNode(word.substring(1), t); } } }class TrieNode { // Initialize your data structure here. char c; boolean leaf; HashMap<Character, TrieNode> children = new HashMap<Character, TrieNode>(); public TrieNode(char c) { this.c = c; } public TrieNode(){};}
阅读全文
0 0
- Leetcode 211. Add and Search Word
- [Leetcode] 211. Add and Search Word
- [leetcode]211. Add and Search Word
- leetcode 211. Add and Search Word
- leetcode 211. Add and Search Word
- leetcode 211. Add and Search Word
- [LeetCode] Add and Search Word
- leetcode--Add and Search Word
- 211. Add and Search Word
- 211. Add and Search Word
- 211. Add and Search Word
- [leetcode] 211.Add and Search Word - Data structure design
- LeetCode 211. Add and Search Word - Data structure design
- [Leetcode]211. Add and Search Word - Data structure design @python
- Leetcode 211. Add and Search Word - Data structure design
- 211. Add and Search Word - Data structure design LeetCode
- leetcode 211. Add and Search Word - Data structure design
- LeetCode 211. Add and Search Word - Data structure design
- C语言中的缓冲机制
- MVC的理解
- 阿里面试回来,想和 Java 程序员谈一谈
- AJAX详解
- Linux命令总结
- leetcode 211. Add and Search Word
- 如何定位死循环或高CPU使用率(linux)
- HDU
- 并查集
- win10下安装MySQL找不到visual c++ 2013解决办法
- Jsp 作用域通信对象
- oracle权限相关(存储过程、JOB)存过必须要加上Authid Current_User is
- memcache的理解
- 【VPS】+【SS】+【PPTP】+【L2TP】无基础小白用PS4科学联机傻瓜指南