using System.Collections.Generic; using System.Linq; using static PalindromeChecker; static class PalindromeChecker { public static string LongestPalindrome(IEnumerable strings) { return strings.Select(LongestPalindromeSubstring).Max(); } public static bool IsPalindrome(string s) { return s == new string(s.Reverse().ToArray()); } public static string AsString(this IEnumerable source) { return new string(source.ToArray()); } public static string LongestPalindromeSubstring(string s) { var end = s.Length; var start = 0; var longestString = s.Take(1).AsString(); while ((end-start) > longestString.Length) { while ((end - start) > longestString.Length) {// var subs = s.Skip(start).Take(end--).AsString(); if (IsPalindrome(subs)) { longestString = subs; } } start++; end = s.Length; } return longestString; } } public class Test { public static void Main() { var list = new List { "aabbaa","carracecar", "aabbbabab" }; System.Console.WriteLine(LongestPalindrome(list)); } }