Реализовать функцию которая будет определять является ли строка палиндромом ? 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;
}

По сути, он делает абсолютно то же самое, что и ваш код, но просто по мне, так он читается полегче.

→ Ссылка