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