Алгоритмы: Полидром из строки на 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 готовится к поддержке сайтов с огромным количеством страниц. Поговорим о последних достижениях, касающихся использования ИИ и развития популярных фреймворков.

Dev новости: новый упрощенный JavaScript-фреймворк Z.Js и Python-фреймворк Mesop от Google.
Dev новости: новый упрощенный JavaScript-фреймворк Z.Js и Python-фреймворк Mesop от Google.
Dev новости: новый упрощенный JavaScript-фреймворк Z.Js и Python-фреймворк Mesop от Google.

Очередной js фрейморк, разработчики с опытом AI чаще планируют сменить работу и фреймворк на пайтоне от гугл для прототипирования.

Релиз-кандидат Deno 2.0 с поддержкой TypeScript 5.6 и другими улучшениями
Релиз-кандидат Deno 2.0 с поддержкой TypeScript 5.6 и другими улучшениями
Релиз-кандидат Deno 2.0 с поддержкой TypeScript 5.6 и другими улучшениями

Команда Deno анонсировала первый релиз-кандидат Deno 2.0, который стал крупнейшим обновлением платформы с момента выхода версии 1.0. Среди ключевых изменений — удаление глобальной переменной window и добавление объекта process из Node.js, что улучшает совместимость между двумя средами.

NumPy 2.0: Новая Эра для Фундаментальной Математической Библиотеки Python
NumPy 2.0: Новая Эра для Фундаментальной Математической Библиотеки Python
NumPy 2.0: Новая Эра для Фундаментальной Математической Библиотеки Python

С релизом NumPy 2.0, первой значимой новой версии с 2006 года, мир Python получает не только улучшенную производительность, но и множество новых функций. NumPy, являясь краеугольным камнем научных и числовых вычислений на Python, продолжает расширять свои возможности и упрощать работу для разработчиков и исследователей.