211. Add and Search Word - Data structure design
class WordDictionary { private WordDictionary[] children=new WordDictionary[26]; boolean isWord=false; /** Initialize your data structure here. */ public WordDictionary() { } /** Adds a word into the data structure. */ public void addWord(String word) { if(word.length()==0) { isWord=true; return; } int idx=word.charAt(0)-'a'; if(children[idx]==null) children[idx]=new WordDictionary(); children[idx].addWord(word.substring(1)); } /** 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) { if(word.length()==0) return isWord; if(word.charAt(0)=='.') { for(int i=0;i<26;i++) if(children[i]!=null&&children[i].search(word.substring(1))==true) return true; return false; } else { int idx=word.charAt(0)-'a'; if(children[idx]!=null) return children[idx].search(word.substring(1)); return false; } } }