コード例 #1
0
        public void MinUniquePrefix()
        {
            string[] names = { "dog", "cat", "apple", "apricot", "fish", "marcelo", "principal", "micro", "fun", "funny", "mark", "partner" };

            PrefixTrie pTrie = new PrefixTrie();

            foreach (string name in names)
            {
                pTrie.AddWord(name);
            }

            pTrie.PrintMinUniquePrefixes("");
        }
コード例 #2
0
 public void PrintMinUniquePrefixes(string prefix)
 {
     if (children == null)
     {
         return;
     }
     foreach (char c in children.Keys)
     {
         PrefixTrie child = (PrefixTrie)children[c];
         if (child.count == 1)
         {
             Console.WriteLine("{0}", prefix + c.ToString());
         }
         else if (child.count > 1)
         {
             child.PrintMinUniquePrefixes(prefix + c.ToString());
         }
     }
 }
コード例 #3
0
        public void AddWord(string word)
        {
            if (String.IsNullOrEmpty(word))
            {
                return;
            }
            if (children == null)
            {
                children = new Hashtable();
            }
            PrefixTrie child = null;

            if (!children.ContainsKey(word[0]))
            {
                child = new PrefixTrie();
                children.Add(word[0], child);
            }
            child = (PrefixTrie)children[word[0]];
            child.count++;
            child.AddWord(word.Substring(1));
        }