Один из самых известных вопросов на собеседовании по JavaScript. Как проверить палиндром в JavaScript. Палиндром — это слово или фраза, которые читаются так же и в обратном порядке. Вот некоторые из примеров: гражданский, роторный, полдень, уровень, мама, мадам и гоночный автомобиль.

Теперь давайте посмотрим, как решить это в JavaScript. Большинство программистов пошли бы прямолинейно и использовали цикл for, чтобы решить эту проблему. Давайте сначала исследуем этот путь:

const isPalindrome = (string) => {
  const length = string.length;
  if (!string) return false;
  for (let i = 0; i < length; i++) {
    if (string[i] !== string[length - i - 1]) {
      return false;
    }
  }
  return true;
}

// isPalindrome('madam') prints true
// isPalindrome('hello') prints false

Это хорошо и решает проблему с нашей стороны. Но можем ли мы что-то улучшить в этой программе. Как видите, чтобы подтвердить, является ли строка палиндромом или нет, нам нужно проверить только половину строки. Например, если длина строки составляет 10 символов, мы можем проверить и сравнить только 5 символов, чтобы проверить палиндром. Если длина строки является нечетным числом, скажем, 5 символов, нам нужно проверить только 2 символа. Строка является палиндромом независимо от среднего символа, если остальные символы

Теперь, применив это к нашей программе, мы можем сократить итерацию цикла до половины.

const isPalindrome = (string) => {
  const mid = Math.floor(string.length / 2);
  const length = string.length
  if (!string) return false;
  for (let i = 0; i < mid; i++) {
    if (string[i] !== string[length - i - 1]) {
      return false;
    }
  }
  return true;
}

// isPalindrome('rotor') prints true
// isPalindrome('hello') prints false

Как обычно это один из способов решения проблемы. Комментарий ниже вашего решения.

Проверьте Палиндром на нашем YouTube