Сравнивайте символы с двух концов после приведения регистра. При первом несовпадении верните false; если указатели встретились — true.
«Палиндром»
Сравнивайте символы с двух концов после приведения регистра. При первом несовпадении верните false; если указатели встретились — true.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
«Палиндром»
Палиндром — это слово, предложение или последовательность символов, которая читается слева направо так же, как и справа налево. Например, «топот» и «Анна» — палиндромы, а «привет» и «Витя» — нет.
Напишите функцию palindrome(str), принимающую как аргумент строку. Функция должна вернуть true, если строка — палиндром, и false, если нет.
Считайте, что на вход всегда передаётся слово: то есть знаков препинания и пробелов в аргументе быть не может.
function palindrome(str) {
}
console.log(palindrome("топот")) // true console.log(palindrome("Saippuakivikauppias")) // true console.log(palindrome("здравствуйте")) // false
Ответ
Сравнивайте символы с двух концов после приведения регистра. При первом несовпадении верните false; если указатели встретились — true.
function palindrome(str) {
const chars = Array.from(str.normalize('NFC').toLowerCase());
for (let left = 0, right = chars.length - 1; left < right; left++, right--) {
if (chars[left] !== chars[right]) return false;
}
return true;
}
Так «Анна» и «Saippuakivikauppias» проходят проверку. Время O(n), память O(n) на массив кодовых точек. По условию пробелы и пунктуацию удалять не требуется; для сложных графем нужен отдельный контракт сравнения.