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