Вот версия Python, которая имеет дело с различными случаями, пунктуацией и пробелом.
import string
def is_palindrome(palindrome):
letters = palindrome.translate(string.maketrans("",""),
string.whitespace + string.punctuation).lower()
return letters == letters[::-1]
Редактирование: Бесстыдно украл от Blair Conrad более опрятный ответ для удаления немного неуклюжей обработки списков из моей предыдущей версии.
int keyIndex = Array.FindIndex(words, w => w.IsKey);
Это фактически дает вам целочисленный индекс, а не объект, независимо от того, какой пользовательский класс вы создали
Попробуйте это ...
var key = words.Where(x => x.IsKey == true);
Если вы хотите найти слово, которое вы можете использовать
var word = words.Where(item => item.IsKey).First();
Это дает вам первый элемент, для которого IsKey истинно (если нет, вы можете использовать .FirstOrDefault ()
Чтобы получить и элемент, и индекс, который вы можете использовать
KeyValuePair<WordType, int> word = words.Select((item, index) => new KeyValuePair<WordType, int>(item, index)).Where(item => item.Key.IsKey).First();