using System.Collections.Generic;
public static void Main()
var tests = new List<string>()
foreach (var test in tests)
Console.WriteLine(test + (IsPalindromeString(test) ? " is " : " is NOT ") + " palindrome string");
var longestPalindrome = FindLongestPalindromeString(test);
if (string.IsNullOrEmpty(longestPalindrome))
Console.WriteLine(test + " has NO sub-palindrome string");
Console.WriteLine("the longest palindrome string of " + test + " is " + longestPalindrome);
public static bool IsPalindromeString(string s)
if (string.IsNullOrEmpty(s) || s.Length <= 1) return false;
public static string FindLongestPalindromeString(string s)
if (string.IsNullOrEmpty(s)) return null;
var subStringLength = s.Length;
while (subStringLength > 0)
for (var i = 0; i <= s.Length - subStringLength; i++)
var subString = s.Substring(i, subStringLength);
if (IsPalindromeString(subString))