internal bool TryGetChild(char item, out SurfixTreeNode node) { if (this.Children.ContainsKey(item)) { node = this.Children[item]; return(true); } node = null; return(false); }
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); }
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); }
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; }