Example #1
0
 internal bool TryGetChild(char item, out SurfixTreeNode node)
 {
     if (this.Children.ContainsKey(item))
     {
         node = this.Children[item];
         return(true);
     }
     node = null;
     return(false);
 }
Example #2
0
        internal bool ContainsWord(string data)
        {
            int            num  = 0;
            SurfixTreeNode root = this.root;

            while (num < data.Length)
            {
                if (!root.Children.ContainsKey(data[num]))
                {
                    return(false);
                }
                root = root.Children[data[num]];
                num++;
            }
            return(root.IsEnd);
        }
Example #3
0
        internal string GetFirstMatch(string input, int offset)
        {
            SurfixTreeNode root    = this.root;
            StringBuilder  builder = new StringBuilder();

            while (offset < input.Length)
            {
                if (!root.Children.ContainsKey(input[offset]))
                {
                    return(null);
                }
                root = root.Children[input[offset]];
                builder.Append(input[offset]);
                if (root.IsEnd)
                {
                    return(builder.ToString());
                }
                offset++;
            }
            return(null);
        }
Example #4
0
        internal void AddItem(string item)
        {
            int            num  = 0;
            SurfixTreeNode root = this.root;

            while (num < item.Length)
            {
                if (!root.Children.ContainsKey(item[num]))
                {
                    SurfixTreeNode node2 = new SurfixTreeNode();
                    root.Children.Add(item[num], node2);
                    root = node2;
                }
                else
                {
                    root = root.Children[item[num]];
                }
                num++;
            }
            root.IsEnd = true;
        }