Реализовать функцию которая будет определять является ли строка палиндромом ? c# string
я сделал таким способом , но может кто то знает вариант по проще
Console.WriteLine("Введите строку : ");
String sl = Console.ReadLine();
char[] sym = sl.ToCharArray();
if (IsPalindrom(sym))
Console.WriteLine("Палиндром");
else
Console.WriteLine("Не палиндром");
}
static bool IsPalindrom(char[] word)
{
for (int i = 0; i < word.Length / 2; i++)
if (word[i] != word[word.Length - 1 - i])
return false;
return true;
}
}
}
Ответы (1 шт):
Автор решения: tym32167
→ Ссылка
Я обычно поясняю себе палиндром - это такая строка, где 2 одинаковые строки сходятся в центре.
То есть что то типа
В А С Я -> <- Я С А В
Есть еще второй вариант, когда 2 строки сходятся к нечетному символу
В А С Я -> О <- Я С А В
В обоих случаях, можно начать с концов и убирать по одной букве, пока не дойдем до середины, ну что то типа
В А С Я -> О <- Я С А В
А С Я -> О <- Я С А
С Я -> О <- Я С
Я -> О <- Я
-> О <-
Когда дойдем до момента, что остаётся 0 или 1 символ, то можно считать, что ответ найден.
Ну с такого пояснения, можно написать не самый короткий, зато очень понятный код
static bool IsPalindrom(string word)
{
var left = 0;
var right = word.Length - 1;
while (left < right)
{
if (word[left] != word[right]) return false;
left++;
right--;
}
return true;
}
По сути, он делает абсолютно то же самое, что и ваш код, но просто по мне, так он читается полегче.