using System.Collections.Generic;
public Result(string key, int value)
public static void Main(string[] args)
Console.WriteLine("String Input");
string strInput = Console.ReadLine();
Console.WriteLine("Input Length:");
int strLength = int.Parse(Console.ReadLine());
if (strInput.Length <= 1)
Console.WriteLine("No pattern exists");
List<Result> list = getPatternsWithCount(strInput, strLength);
for (int i = 0; i < list.Count; i++)
Console.WriteLine(list[i].key + ":" + list[i].value);
Console.WriteLine("Please enter Valid input and try again");
public static List<Result> getPatternsWithCount(string strInput, int strLength)
Dictionary<string, int> result = new Dictionary<string, int>();
var list = new List<Result>();
for (int i = 0; i <= strInput.Length - strLength; i++)
string tempStr = strInput.Substring(i, strLength);
if (result.ContainsKey(tempStr))
int count = result.GetValueOrDefault(tempStr);
result[tempStr] = ++count;
foreach (KeyValuePair<string, int> entry in result)
list.Add(new Result(entry.Key, entry.Value));