Функция определения палиндрома

Нормализуйте регистр, удалите пробелы и знаки пунктуации, затем сравните симметричные символы. Для международного текста удобно использовать Unicode-категорию P.

Короткий ответ

Что ответить на собеседовании

Нормализуйте регистр, удалите пробелы и знаки пунктуации, затем сравните симметричные символы. Для международного текста удобно использовать Unicode-категорию P.

Подробный разбор

Ответ с пояснениями

Условие

Реализуйте функцию checkPalindrome, принимающую строку и возвращающую true, если строка читается одинаково в обоих направлениях. При проверке игнорируются пробелы, знаки пунктуации и регистр символов.

Ответ

Нормализуйте регистр, удалите пробелы и знаки пунктуации, затем сравните симметричные символы. Для международного текста удобно использовать Unicode-категорию P.

function checkPalindrome(text) {
  const chars = Array.from(text.toLowerCase().replace(/[\p{P}\s]/gu, ''));
  for (let left = 0, right = chars.length - 1; left < right; left++, right--) {
    if (chars[left] !== chars[right]) return false;
  }
  return true;
}

После удаления игнорируемых символов пустая строка считается палиндромом. Категория P удаляет пунктуацию, но не все произвольные символы, например математические знаки. Это явно соответствует правилу из условия; для составных графем понадобится более сложная сегментация.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее