using System.Collections.Generic;
public static void Main()
string string1 = "ahappycode";
string string2 = "happymeal";
string intersection = string1.GetLongestConsecutiveIntersection(string2);
Console.Write(intersection);
public static class Extensions
public static string GetLongestConsecutiveIntersection(this string string1, string string2, StringComparison comparison = StringComparison.Ordinal)
string first = string1.Length >= string2.Length ? string1 : string2;
string second = string1.Length >= string2.Length ? string2 : string1;
var allSubstrings = first.GetAllSubstring().OrderByDescending(s => s.Length);
foreach(string substring in allSubstrings)
if(second.IndexOf(substring, comparison) >= 0)
public static List<string> GetAllSubstring(this string input)
var stringList = new List<string>();
for (int i = 0; i < input.Length; i++)
for (int j = i; j < input.Length; j++)
stringList.Add(input.Substring(i, j - i + 1));