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;
}
}
}