Один из самых известных вопросов на собеседовании по 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