Условие

Дана строка s. Напишите функцию, которая проверяет, является ли строка s палиндромом. Строка s является палиндромом, если она читается одинаково как справа налево, так и слева направо, после приведения всех букв к нижнему регистру и удаления всех неалфавитно-цифровых символов. Неалфавитно-цифровые символы - это символы, не являющиеся буквами или цифрами.

Примеры

Пример 1:

Ввод: s = "A man, a plan, a canal: Panama"

Вывод: true

Объяснение: Строка s может быть приведена к "amanaplanacanalpanama", что является палиндромом.

Пример 2:

Ввод: s = "race a car"

Вывод: false

Объяснение: Строка s может быть приведена к "raceacar". Эта строка не является палиндромом, так как она читается по-разному в обоих направлениях.

Решение

  1. Приведите все символы строки к нижнему регистру.
  2. Удалите все неалфавитно-цифровые символы из строки.
  3. Проверьте, является ли строка палиндромом.

Объяснение с примером

Для строки s = "A man, a plan, a canal: Panama" шаги решения могут быть следующими:

  1. Приводим все символы к нижнему регистру: "a man, a plan, a canal: panama"
  2. Удаляем все неалфавитно-цифровые символы: "amanaplanacanalpanama"
  3. Проверяем, является ли полученная строка палиндромом: "amanaplanacanalpanama" читается одинаково как справа налево, так и слева направо, поэтому строка s является палиндромом.