Алгоритмы: Полидром из строки на JavaScript

Полидром — это слова читающиеся в обоих направлениях. И сложность алгоритма может быть разным в зависимости от требований алгоритма, например если требуется не учитывать пробелы или регистр. Но рассмотрим простой вариант, когда на вход приходит слово в lowercase без пробелов.

Пример с циклом while

Цикл идет с 2 сторон и сравнивает каждый символ.

function isPalindrome(string) {
	let left = 0;
	let right = string.length - 1;

	while (left < right) {
		if (string[left] !== string[right]) {
			return false;
		}

		left += 1;
		right -= 1;
	}

	return true;
}

const falsePolidromString = 'meloman';
const truePolidromString = 'redder';
console.log(isPalindrome(falsePolidromString)); // Результат: false
console.log(isPalindrome(truePolidromString)); // Результат: true

Сложность алгоритма ~ O(n)

Компактный вариант с reverse() строки

Сохраняем в переменную строку и отображаем её в reverse(), далее сравниваем.

function isPalindrome(str) {
	var lowRegStr = str.toLowerCase();
	var reverseStr = lowRegStr.split('').reverse().join(''); 
	return reverseStr === lowRegStr;
}

const falsePolidromString = 'meloman';
const truePolidromString = 'redder';
console.log(isPalindrome(falsePolidromString)); // Результат: false
console.log(isPalindrome(truePolidromString)); // Результат: true
Читайте также
Выпущен RabbitMQ 4.0 с поддержкой Khepri, улучшенным AMQP 1.0 и новыми функциями очередей
Выпущен RabbitMQ 4.0 с поддержкой Khepri, улучшенным AMQP 1.0 и новыми функциями очередей
Выпущен RabbitMQ 4.0 с поддержкой Khepri, улучшенным AMQP 1.0 и новыми функциями очередей

Компания RabbitMQ представила новую, долгожданную версию RabbitMQ 4.0, которая включает множество значительных обновлений и улучшений. Одним из ключевых нововведений стало полное внедрение поддержки Khepri — это специализированное хранилище данных, призванное заменить ранее используемую Mnesia. Напомним, что Khepri до этого момента был в статусе экспериментальной функции.

Dev новости: готов Angular 19, генератор Nue, JetBrains
Dev новости: готов Angular 19, генератор Nue, JetBrains
Dev новости: готов Angular 19, генератор Nue, JetBrains

На следующей неделе разработчики смогут оценить новый релиз популярного фреймворка Angular 19. Его запуск запланирован на вторник, 19 ноября, 9:00 по тихоокеанскому времени. В преддверии этого события в разных городах мира пройдут онлайн- и оффлайн-вечеринки, хотя большинство из них пока что организованы вне США, включая несколько мероприятий во Франции.

Dev новости: Google Blocks стал Open source, Релиз Slint 1.7
Dev новости: Google Blocks стал Open source, Релиз Slint 1.7
Dev новости: Google Blocks стал Open source, Релиз Slint 1.7

На этой неделе Dev News сообщает о значимых новостях: выпуск новой версии Astro с функцией Server Islands и сотрудничество с Netlify, а также открытие Google Blocks и релиз Slint 1.7.

Dev новости: Rspack для rust, remix улучшает здоровье сайта
Dev новости: Rspack для rust, remix улучшает здоровье сайта
Dev новости: Rspack для rust, remix улучшает здоровье сайта

OpenAI перешли с next.js На remix, Rspack сборщик для rust, релиз TypeScript 5.6 и другие dev новости