Приведите строку к одному регистру, удалите пробельные символы и сравните симметричные позиции. Пунктуацию не удаляйте: по условию игнорируются только регистр и пробелы.
Проверка строки на палиндром
Приведите строку к одному регистру, удалите пробельные символы и сравните симметричные позиции. Пунктуацию не удаляйте: по условию игнорируются только регистр и пробелы.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Дана строка. Требуется определить, является ли она палиндромом — т.е. читается одинаково слева направо и справа налево, при этом регистр символов и пробелы не учитываются.
Ответ
Приведите строку к одному регистру, удалите пробельные символы и сравните симметричные позиции. Пунктуацию не удаляйте: по условию игнорируются только регистр и пробелы.
function isPalindrome(text) {
const chars = Array.from(text.toLowerCase().replace(/\s/g, ''));
for (let left = 0, right = chars.length - 1; left < right; left++, right--) {
if (chars[left] !== chars[right]) return false;
}
return true;
}
Пустая строка считается палиндромом. Вариант работает по кодовым точкам; составные графемы требуют дополнительного разбиения. Время O(n), память O(n) для нормализованного массива. Регулярное выражение здесь игнорирует также табуляцию и переводы строк.