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