Алгоритмы: Полидром из строки на 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
Читайте также
Веб-фреймворк Astro добавил правила аудита доступности
Веб-фреймворк Astro добавил правила аудита доступности
Веб-фреймворк Astro добавил правила аудита доступности

Теперь разработчикам будет предоставлена возможность получать предупреждения о неподдерживаемых атрибутах ARIA (Accessible Rich Internet Applications) и отсутствующих атрибутах, необходимых для ролей ARIA.

Volman IT нашел игру-программу, в которой нужно написать код Rust для управления флотом космических кораблей
Volman IT нашел игру-программу, в которой нужно написать код Rust для управления флотом космических кораблей
Volman IT нашел игру-программу, в которой нужно написать код Rust для управления флотом космических кораблей

Ваш код отвечает за работу двигателей, оружия, радаров и средств связи кораблей — от крошечных ракет до огромных крейсеров.

В Deno 1.37 улучшили возможности для разработки
В Deno 1.37 улучшили возможности для разработки
В Deno 1.37 улучшили возможности для разработки

Эта интеграция позволяет разработчикам использовать JavaScript и TypeScript в блокнотах Jupyter для анализа данных, машинного обучения и создания интерактивных отчетов.

Ретроспектива Vue 3
Ретроспектива Vue 3
Ретроспектива Vue 3

В этом тексте вспомним, что было выходило нового во Vue 3 при минорных обновлениях.