fork(1) download
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using static PalindromeChecker;
  4.  
  5. static class PalindromeChecker {
  6. public static string LongestPalindrome(IEnumerable<string> strings) {
  7. return strings.Select(LongestPalindromeSubstring).Max();
  8. }
  9.  
  10. public static bool IsPalindrome(string s) {
  11. return s == new string(s.Reverse().ToArray());
  12. }
  13.  
  14. public static string AsString(this IEnumerable<char> source) {
  15. return new string(source.ToArray());
  16. }
  17.  
  18. public static string LongestPalindromeSubstring(string s) {
  19. var end = s.Length;
  20. var start = 0;
  21. var longestString = s.Take(1).AsString();
  22. while ((end-start) > longestString.Length) {
  23. while ((end - start) > longestString.Length) {//
  24. var subs = s.Skip(start).Take(end--).AsString();
  25. if (IsPalindrome(subs)) {
  26. longestString = subs;
  27. }
  28. }
  29. start++;
  30. end = s.Length;
  31. }
  32. return longestString;
  33. }
  34. }
  35.  
  36. public class Test {
  37. public static void Main() {
  38. var list = new List<string> { "aabbaa","carracecar", "aabbbabab" };
  39. System.Console.WriteLine(LongestPalindrome(list));
  40. }
  41. }
Success #stdin #stdout 0.02s 131648KB
stdin
Standard input is empty
stdout
racecar