С Linq
public static bool IsPalindrome(string str)
{
return String.Compare(str, new string(Enumerable.Range(1, str.Length).Select(i => str[str.Length - i ]).ToArray())) == 0;
}
без Linq
public static bool IsPalindrome2(string str)
{
var isPalindrome = true;
for (int i=0; i<str.Length ; i++)
{
if ( str[i] != str[str.Length -i -1])
{
isPalindrome = false;
break;
}
}
return isPalindrome;
}
Редактировать В вашем случае вы делите длину строки на половину. Допустим, у вас есть 5-значный палиндром. Вы делите длину палиндрома, которая равна 5 на 2 = 2, после чего вы получаете ее подстроку
len = str.Length / 2 // 5/2 = 2
part1 = str.substr(0,2);
part2 = str.substr(2,2); // this part is wrong for 5 digit number
для 4-значного числа
len = str.Length / 2 // 4/2 = 2
part1 = str.substr(0,2);
part2 = str.substr(2,2); // now it is giving correct result.
проверьте приведенный ниже код для решения
static bool IsPalindrom(int numb)
{
var productString = Convert.ToString(numb);
var sub1 = productString.Substring(0, productString.Length / 2);
var sub2 = new string(productString.Substring(productString.Length / 2 + (productString.Length % 2 == 1 ? 1 : 0), productString.Length / 2).Reverse().ToArray());
Console.WriteLine(sub1);
Console.WriteLine(sub2);
return sub1.Equals(sub2);
}