private long[] Solve(string text, long n, string[] patterns) { List <long> result = new List <long>(); text = text + '$'; long[] suffixArray = SuffixArray.BuildSuffixArray(text); bool[] isAdded = new bool[suffixArray.Length]; foreach (var pattern in patterns) { int minIdx = LeftBS(suffixArray, pattern, text); int maxIdx = RightBS(suffixArray, pattern, text); if (minIdx == -1 || maxIdx == -1) { continue; } for (int i = minIdx; i <= maxIdx; i++) { if (!isAdded[i]) { result.Add(suffixArray[i]); isAdded[i] = true; } } } if (!result.Any()) { result.Add(-1); } return(result.ToArray()); }
private long[] Solve(string text) { var suffixArray = new SuffixArray(); return(suffixArray.BuildSuffixArray(text)); }
private long[] Solve(string text) { return(SuffixArray.BuildSuffixArray(text)); }
private long[] Solve(string text) { SuffixArray mySA = new SuffixArray(text); return(mySA.BuildSuffixArray()); }