using System;
public class Test
{
public static bool IsPalindrome(string value)
{
if ( string.IsNullOrEmpty(value) )
return true;
return isPalindrome(value, 0, value.Length - 1);
}
private static bool isPalindrome(string value, int startChar, int endChar)
{
if ( value[startChar] != value[endChar] )
return false;
if ( startChar >= endChar )
return true;
return isPalindrome(value, startChar + 1, endChar - 1);
}
public static void Main()
{
Console.WriteLine(IsPalindrome(""));
Console.WriteLine(IsPalindrome("1"));
Console.WriteLine(IsPalindrome("11"));
Console.WriteLine(IsPalindrome("121"));
Console.WriteLine(IsPalindrome("123"));
}
}
dXNpbmcgU3lzdGVtOwoKcHVibGljIGNsYXNzIFRlc3QKewogICAgcHVibGljIHN0YXRpYyBib29sIElzUGFsaW5kcm9tZShzdHJpbmcgdmFsdWUpCiAgICB7CiAgICAgICAgaWYgKCBzdHJpbmcuSXNOdWxsT3JFbXB0eSh2YWx1ZSkgKQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKCiAgICAgICAgcmV0dXJuIGlzUGFsaW5kcm9tZSh2YWx1ZSwgMCwgdmFsdWUuTGVuZ3RoIC0gMSk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgYm9vbCBpc1BhbGluZHJvbWUoc3RyaW5nIHZhbHVlLCBpbnQgc3RhcnRDaGFyLCBpbnQgZW5kQ2hhcikKICAgIHsKICAgICAgICBpZiAoIHZhbHVlW3N0YXJ0Q2hhcl0gIT0gdmFsdWVbZW5kQ2hhcl0gKQogICAgICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgICAgIGlmICggc3RhcnRDaGFyID49IGVuZENoYXIgKQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKCiAgICAgICAgcmV0dXJuIGlzUGFsaW5kcm9tZSh2YWx1ZSwgc3RhcnRDaGFyICsgMSwgZW5kQ2hhciAtIDEpOwogICAgfQogICAgCglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CiAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoSXNQYWxpbmRyb21lKCIiKSk7CiAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoSXNQYWxpbmRyb21lKCIxIikpOwogICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKElzUGFsaW5kcm9tZSgiMTEiKSk7CiAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoSXNQYWxpbmRyb21lKCIxMjEiKSk7CiAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoSXNQYWxpbmRyb21lKCIxMjMiKSk7Cgl9Cn0=