解法
前缀树加上dfs
代码
class WordDictionary { TrieNode root; /** Initialize your data structure here. */ public WordDictionary() { root=new TrieNode(); } /** Adds a word into the data structure. */ public void addWord(String word) { TrieNode cur=root; for(int i=0;i<word.length();i++) { int temp=word.charAt(i)-'a'; if(cur.node[temp]==null) { cur.node[temp]=new TrieNode(); } cur=cur.node[temp]; } cur.isEnd=true; } public boolean search(String word) { return f(word,0,root); } public boolean f(String word,int index,TrieNode node) { //base case if(node==null) { return false; } else if(index==word.length()) { return node.isEnd; } char temp=word.charAt(index); if(temp=='.') { for(int i=0;i<26;i++) { if(node.node[i]!=null) { if(f(word,index+1,node.node[i])){ return true; } } } return false; }else{ int tempint=temp-'a'; return f(word,index+1,node.node[tempint]); } } } class TrieNode{ TrieNode[] node; boolean isEnd; public TrieNode() { node=new TrieNode[26]; isEnd=false; } } /** * Your WordDictionary object will be instantiated and called as such: * WordDictionary obj = new WordDictionary(); * obj.addWord(word); * boolean param_2 = obj.search(word); */