Алгоритмы: Полидром из строки на 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
Читайте также
Dev новости: Astro управление через API, тонкая настройка gtp4
Dev новости: Astro управление через API, тонкая настройка gtp4
Dev новости: Astro управление через API, тонкая настройка gtp4

Мир технологий продолжает развиваться стремительными темпами, и последние новости показывают, что инструменты для разработки на базе ИИ становятся все более востребованными, а фреймворк Astro готовится к поддержке сайтов с огромным количеством страниц. Поговорим о последних достижениях, касающихся использования ИИ и развития популярных фреймворков.

WildFly 30 готовится к использованию JDK 21
WildFly 30 готовится к использованию JDK 21
WildFly 30 готовится к использованию JDK 21

В релиз также включили новую возможность настройки параметра «max-read-page-bytes» в подсистеме messaging-activemq.

Что значат стабильные версии браузеров Firefox 122, Chrome 121 и Safari 17.3 в феврале 2024
Что значат стабильные версии браузеров Firefox 122, Chrome 121 и Safari 17.3 в феврале 2024
Что значат стабильные версии браузеров Firefox 122, Chrome 121 и Safari 17.3 в феврале 2024

Рассказываем о некоторых интересных функциях, которые появились в стабильных и бета-версиях веб-браузеров в январе 2024 года.

Microsoft Dev Kit для Visual Studio Code стал общедоступным
Microsoft Dev Kit для Visual Studio Code стал общедоступным
Microsoft Dev Kit для Visual Studio Code стал общедоступным

Расширение C# Dev Kit включает в себя основные сервисы языка C#, помощь IntelliCode, возможности тестирования, отладки и управления проектами. Поддержка .NET MAUI и Unity сейчас находится в стадии предварительного просмотра.