using System;
using System.Collections.Generic;
using System.Linq;
public class Test
{
public static IEnumerable<string> getAllSubstrings(string word)
{
return from charIndex1 in Enumerable.Range(0, word.Length)
from charIndex2 in Enumerable.Range(0, word.Length - charIndex1 + 1)
where charIndex2 >= 2
select word.Substring(charIndex1, charIndex2);
}
public static void Main()
{
var list = new List<string>() {
"ToCommondays","MonCommonday_","TuesCommonda","WednesCommon_day"
};
string shortest = list.OrderBy(s => s.Length).First();
IEnumerable<string> shortestSubstrings = getAllSubstrings(shortest)
.OrderByDescending(s => s.Length);
var other = list.Where(s => s != shortest).ToArray();
string longestCommonIntersection = string.Empty;
foreach (string subStr in shortestSubstrings)
{
bool allContains = other.All(s => s.Contains(subStr));
if (allContains)
{
longestCommonIntersection = subStr;
break;
}
}
Console.Write("longestCommonIntersection=" + longestCommonIntersection);
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CgpwdWJsaWMgY2xhc3MgVGVzdAp7CiAgICAgcHVibGljIHN0YXRpYyBJRW51bWVyYWJsZTxzdHJpbmc+IGdldEFsbFN1YnN0cmluZ3Moc3RyaW5nIHdvcmQpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gZnJvbSBjaGFySW5kZXgxIGluIEVudW1lcmFibGUuUmFuZ2UoMCwgd29yZC5MZW5ndGgpCiAgICAgICAgICAgICAgICAgICBmcm9tIGNoYXJJbmRleDIgaW4gRW51bWVyYWJsZS5SYW5nZSgwLCB3b3JkLkxlbmd0aCAtIGNoYXJJbmRleDEgKyAxKQogICAgICAgICAgICAgICAgICAgd2hlcmUgY2hhckluZGV4MiA+PSAyCiAgICAgICAgICAgICAgICAgICBzZWxlY3Qgd29yZC5TdWJzdHJpbmcoY2hhckluZGV4MSwgY2hhckluZGV4Mik7CiAgICAgICAgfQogIAoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewogICAgICAgICAgICAgdmFyIGxpc3QgPSBuZXcgTGlzdDxzdHJpbmc+KCkgeyAKICAgICAgICAgICAgICAgICJUb0NvbW1vbmRheXMiLCJNb25Db21tb25kYXlfIiwiVHVlc0NvbW1vbmRhIiwiV2VkbmVzQ29tbW9uX2RheSIKICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIHN0cmluZyBzaG9ydGVzdCA9IGxpc3QuT3JkZXJCeShzID0+IHMuTGVuZ3RoKS5GaXJzdCgpOwogICAgICAgICAgICBJRW51bWVyYWJsZTxzdHJpbmc+IHNob3J0ZXN0U3Vic3RyaW5ncyA9IGdldEFsbFN1YnN0cmluZ3Moc2hvcnRlc3QpCiAgICAgICAgICAgICAgICAuT3JkZXJCeURlc2NlbmRpbmcocyA9PiBzLkxlbmd0aCk7CiAgICAgICAgICAgIHZhciBvdGhlciA9IGxpc3QuV2hlcmUocyA9PiBzICE9IHNob3J0ZXN0KS5Ub0FycmF5KCk7CiAgICAgICAgICAgIHN0cmluZyBsb25nZXN0Q29tbW9uSW50ZXJzZWN0aW9uID0gc3RyaW5nLkVtcHR5OwogICAgICAgICAgICBmb3JlYWNoIChzdHJpbmcgc3ViU3RyIGluIHNob3J0ZXN0U3Vic3RyaW5ncykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgYm9vbCBhbGxDb250YWlucyA9IG90aGVyLkFsbChzID0+IHMuQ29udGFpbnMoc3ViU3RyKSk7CiAgICAgICAgICAgICAgICBpZiAoYWxsQ29udGFpbnMpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgbG9uZ2VzdENvbW1vbkludGVyc2VjdGlvbiA9IHN1YlN0cjsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBDb25zb2xlLldyaXRlKCJsb25nZXN0Q29tbW9uSW50ZXJzZWN0aW9uPSIgKyBsb25nZXN0Q29tbW9uSW50ZXJzZWN0aW9uKTsKCX0KfQ==