Ono to totiž bylo celé špatně už na začátku a ne až teď. A aby se to zprovoznilo, tak je potřeba odstranit všechny chyby a ne jenom některé, na které jsem zatím upozornil. Dneska jsem asi moc měkký, takže uvedu příklad, jak by to mohlo vypadat. Ale dělám to fakt výjimečně.
bool isPalindrome(string input)
{
var first = 0;
var last = input.Length - 1;
while (first < last)
{
var firstChar = input[first];
if (shouldSkip(firstChar))
{
first++;
continue;
}
var lastChar = input[last];
if (shouldSkip(lastChar))
{
last--;
continue;
}
if (char.ToLower(firstChar) != char.ToLower(lastChar))
return false;
first++;
last--;
}
return true;
}
bool shouldSkip(char chr)
{
return chr < 48 || (chr > 57 && chr < 65) || (chr > 90 && chr < 97) || chr > 122;
}