211 Add and Search Word - Data structure design

来源:互联网 发布:apache启动级别和顺序 编辑:程序博客网 时间:2024/06/01 09:43

//Trie 树 + 深搜public class WordDictionary {    public TrieNode root;public WordDictionary(){root = new TrieNode();}public void addWord(String word) {    if(word==null||word.length()==0){return;}char[] letters = word.toCharArray();TrieNode node = root;for(int i=0;i<letters.length;++i){int pos = letters[i] - 'a';if(node.son[pos]==null){node.son[pos] = new TrieNode();node.son[pos].var = letters[i];}else{++node.son[pos].num;}node = node.son[pos];}node.isEnd = true;    }public boolean search(String word) {    if(word==null||word.length()==0){return false;}char[] letters = word.toCharArray();TrieNode node = root;return subSearch(root, word, 0);    }       public boolean subSearch(TrieNode node, String str, int depth){if(depth==str.length()){if(node.isEnd==true){return true;}else{return false;}}char[] letters = str.toCharArray();if(letters[depth]=='.'){boolean res = false;for(int i=0;i<26;++i){if(node.son[i]!=null){boolean flag = subSearch(node.son[i], str, depth + 1);if(flag==true){res = true;}}}return res;}else{int pos = letters[depth] - 'a';if(node.son[pos]!=null){return subSearch(node.son[pos], str, depth + 1);}else{return false;}}}}class TrieNode {public int num;private int SIZE = 26;public TrieNode[] son;public char var;public boolean isEnd;public TrieNode(){num = 1;son = new TrieNode[SIZE];isEnd = false;}}



0 0
原创粉丝点击