Leetcode 211. Add and Search Word

来源:互联网 发布:cn域名不备案能解析吗 编辑:程序博客网 时间:2024/05/24 15:41




public class WordDictionary {        private TrieNode root;
    public class TrieNode {        TrieNode[] arr;        boolean isEnd;        public TrieNode() {            arr = new TrieNode[26];        }    }    public WordDictionary() {        root = new TrieNode();    }        public void addWord(String word) {        TrieNode p = root;        for (int i = 0; i < word.length(); i++) {            int index = word.charAt(i)-'a';            if (p.arr[index] == null) {                TrieNode temp = new TrieNode();                p.arr[index] = temp;                p = temp;            }            else {                p = p.arr[index];            }        }        p.isEnd = true;    }        public boolean search(String word) {TrieNode p = root;return match(word.toCharArray(), 0, p);}public boolean match(char[] chars, int k, TrieNode p) {if (k == chars.length) return p.isEnd;if (chars[k] != '.') {return p.arr[chars[k] -'a'] != null && match(chars, k+1,p.arr[chars[k]-'a']);}else {for (int i = 0; i < p.arr.length; i++) {if (p.arr[i] != null) {if (match(chars, k + 1, p.arr[i])) return true;}}}return false;}   }


0 0
原创粉丝点击