Add and Search Word - Data structure design
来源:互联网 发布:mac hosts文件位置 编辑:程序博客网 时间:2024/05/16 09:14
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
Note:
You may assume that all words are consist of lowercase letters a-z.
click to show hint.
You should be familiar with how a Trie works. If not, please work on this problem: Implement Trie (Prefix Tree) first.
思路:
该题目和”Trie”相似,稍微有些变化。
public class WordDictionary { static class Node{ public Map<Character,Node> map; public char c; public boolean isTail; public Node(char c){ this.c=c; map = new HashMap<>(); isTail=false; } } private Node root; public WordDictionary(){ root = new Node((char)0); } // Adds a word into the data structure. public void addWord(String word) { addWord(word,root); } private void addWord(String word,Node root){ if(word.length()==0){ root.isTail=true; return; } char c=word.charAt(0); if(!root.map.containsKey(c)){ Node n = new Node(c); root.map.put(c,n); } Node n=root.map.get(c); addWord(word.substring(1),n); } // Returns if the word is in the data structure. A word could // contain the dot character '.' to represent any one letter. public boolean search(String word) { return search(word,root); } private boolean search(String word,Node root){ if(word.length()==0){ return root.isTail==true; } char c=word.charAt(0); if(c=='.'){//深度优先搜索 for(Map.Entry<Character,Node> en:root.map.entrySet()){ boolean ret = search(word.substring(1),en.getValue()); if(ret){ return true; } } return false; }else{ if(!root.map.containsKey(c)){ return false; } Node n=root.map.get(c); return search(word.substring(1),n); } }}
0 0
- Add and Search Word - Data structure design
- Add and Search Word - Data structure design
- Add and Search Word - Data structure design
- Add and Search Word - Data structure design
- Add and Search Word - Data structure design
- Add and Search Word - Data structure design
- Add and Search Word - Data structure design
- Add and Search Word - Data structure design
- Add and Search Word - Data structure design
- Add and Search Word - Data structure design
- Add and Search Word - Data structure design
- LeetCode 211 - Add and Search Word - Data structure design
- LeetCode Add and Search Word - Data structure design
- 211Add and Search Word - Data structure design
- Leetcode Add and Search Word - Data structure design
- leetcode:Add and Search Word - Data structure design
- [leetcode]Add and Search Word - Data structure design
- [LeetCode] Add and Search Word - Data structure design
- PAT 1018. Public Bike Management (30)
- 用fork创建进程树
- 一个利用简单迭代方法求方程cos(x)-x=0的一个实根的程序
- 5乘5的数独游戏
- ajax初步
- Add and Search Word - Data structure design
- Intent 应用
- java gbk转utf-8乱码问题
- linux内置浏览器中文乱码
- iOS之APP保留更新接口被拒
- URAL 1464 Light
- HTML5之智能表单
- Java--截取路径字符串
- 高效率的YUV转RGB的OnPaint操作