Нормализуйте регистр, удалите пробелы и знаки пунктуации, затем сравните симметричные символы. Для международного текста удобно использовать 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 удаляет пунктуацию, но не все произвольные символы, например математические знаки. Это явно соответствует правилу из условия; для составных графем понадобится более сложная сегментация.