using System.Collections.Generic;
static public List<string> Normalize(string input, List<string> dictionary)
return dictionary.Where(a => input.Contains(a)).ToList();
static public List<string> Normalize2(string input, List<string> dictionary)
var sorted = dictionary.OrderByDescending( a => a.Length).ToList();
var results = new List<string>();
foreach (var s in sorted)
input = input.Substring(s.Length);
while (input != "" && found);
public static void Test1()
List<string> dictionary = new List<string>
"COMPUTER","FIVE","CODE","COLOR","FOO"
string input = "COMPUTERFIVECODECOLORBAR";
var normalized = Normalize(input, dictionary);
foreach (var s in normalized)
public static void Test2()
List<string> dictionary = new List<string>
"SHORT","LONG","LONGER","FOO","FOOD"
string input = "FOODSHORTLONGERFOO";
var normalized = Normalize2(input, dictionary);
foreach (var s in normalized)
public static void Main()