using System.Collections.Generic;
public static void Main()
Print(PatternOccurances("zfabcde224lkfabc51+crsdtab=", 3));
Print(PatternOccurances("abc++---+ssa---", 2));
Print(PatternOccurances("zfabcde224lkfabc51+crsdtab=", 3));
public static KeyValuePair<string,int> PatternOccurances(string s, int patternLength)
if (string.IsNullOrEmpty(s) || patternLength <= 0 || patternLength > s.Length)
throw new ArgumentException("Invalid parameters!");
Dictionary<string, int> patternOccurances = new Dictionary<string, int>();
for (int i = 0; i < s.Length - patternLength + 1; i++)
string pattern = s.Substring(i, patternLength);
if (patternOccurances.ContainsKey(pattern))
patternOccurances[pattern]++;
patternOccurances[pattern] = 1;
int maxOccurances = patternOccurances.Values.Max();
return patternOccurances.Last(x => x.Value == maxOccurances);
public static void Print(KeyValuePair<string,int> result)
Console.WriteLine("Pattern: \"" + result.Key + "\" Occurance: " + result.Value);