Сравнивайте символы с двух концов, не удаляя пробелы и знаки препинания. По условию нормализация регистра и очистка строки не требуются.
Определение палиндрома в строке
Сравнивайте символы с двух концов, не удаляя пробелы и знаки препинания. По условию нормализация регистра и очистка строки не требуются.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Создайте функцию, принимающую строку и возвращающую логическое значение true, если строка читается одинаково слева направо и справа налево, и false в противном случае. При этом необходимо учитывать все пробелы и знаки препинания, присутствующие в исходной строке.
Ответ
Сравнивайте символы с двух концов, не удаляя пробелы и знаки препинания. По условию нормализация регистра и очистка строки не требуются.
function isPalindrome(text) {
const chars = [...text];
for (let left = 0, right = chars.length - 1; left < right; left++, right--) {
if (chars[left] !== chars[right]) return false;
}
return true;
}
Пустая строка и строка из одного символа считаются палиндромами. «Аа» даст false, а «а а» — true. Перебор ведётся по Unicode-кодовым точкам; составные графемы и канонически эквивалентные написания специально не нормализуются. Время O(n), память O(n) для массива символов.