«Палиндром»

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

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее