Esempio n. 1
0
 private void AddWord(WordTrieNode node, char[] charArray, int startIndex)
 {
     if (node == null || charArray == null || charArray.Length == 0 || startIndex < 0 || startIndex > charArray.Length)
     {
         return;
     }
     if (startIndex == charArray.Length)
     {
         node.Children[WordTrieNode.TerminatingChar] = new WordTrieNode(WordTrieNode.TerminatingChar);
     }
     else
     {
         char ch = charArray[startIndex];
         if (!node.Children.ContainsKey(ch))
         {
             node.Children[ch] = new WordTrieNode(ch);
         }
         AddWord(node.Children[ch], charArray, startIndex + 1);
     }
 }
Esempio n. 2
0
 private bool Search(WordTrieNode node, char[] charArray, int startIndex)
 {
     if (node == null || charArray == null || charArray.Length == 0 || startIndex < 0 || startIndex > charArray.Length)
     {
         return(false);
     }
     if (startIndex == charArray.Length)
     {
         return(node.Children.ContainsKey(WordTrieNode.TerminatingChar));
     }
     else
     {
         char ch = charArray[startIndex];
         if (ch == WildCardChar)
         {
             foreach (char childChar in node.Children.Keys)
             {
                 if (childChar != WordTrieNode.TerminatingChar)
                 {
                     WordTrieNode childNode = node.Children[childChar];
                     if (Search(childNode, charArray, startIndex + 1))
                     {
                         return(true);
                     }
                 }
             }
             return(false);
         }
         else
         {
             if (node.Children.ContainsKey(ch))
             {
                 return(Search(node.Children[ch], charArray, startIndex + 1));
             }
             else
             {
                 return(false);
             }
         }
     }
 }
Esempio n. 3
0
 /** Initialize your data structure here. */
 public WordDictionary()
 {
     Root = new WordTrieNode(WordTrieNode.RootChar);
 }