using System.Collections.Generic;
public static void Main()
var patterns = FindRepeatedPatterns("zf3kabxcde224lkzf3mabxc51+crsdtzf3nab=", 3);
foreach (var pattern in patterns)
Console.WriteLine($"'{pattern.Key}' appears {pattern.Value} times");
public static IEnumerable<KeyValuePair<string, int>> FindRepeatedPatterns(string input, int patternLength)
var patterns = new Dictionary<string, int>();
if (string.IsNullOrWhiteSpace(input) ||
input.Length <= patternLength)
return patterns.ToList();
for (int i = 0; i <= input.Length - patternLength; i++)
var pattern = input.Substring(i, patternLength);
patterns[pattern] = patterns.GetValueOrDefault(pattern) + 1;
return patterns.Where(pattern => pattern.Value > 1);