@krista Вы можете использовать функцию ниже, чтобы проверить является ли заданная строка палиндромом или нет в Javascript. Данная функция не чувствительна к регистру строку(маленькие, заглавные буквы) и алгоритм довольно таки прост: разбиваем строку(Spread оператором) и переворачиваем массив и снова соединяем строку, посмотрите код ниже:
1 2 3 4 5 6 7 8 9 |
function isPalindrome(string) { return string.toLowerCase() === [...string.toLowerCase()].reverse().join(""); } // Вывод: true console.log(isPalindrome("кабак")); // Вывод: false console.log(isPalindrome("кабак1")); |
@krista
Можно сравнить строку с ее обратной копией, удалив пробелы и игнорируя регистр. Ниже приведен пример функции, которая делает это:
1 2 3 4 |
function isPalindrome(str) { str = str.replace(/s+/g, '').toLowerCase(); return str === str.split('').reverse().join(''); } |
Вы можете использовать эту функцию в следующем выражении:
1
|
console.log(isPalindrome("A man, a plan, a canal: Panama")); // true |
Еще один способ сделать это с использованием Array.prototype.every() и деструктуризации массива
1 2 3 4 |
function isPalindrome(str) { str = str.replace(/s+/g, '').toLowerCase(); return str.split('').every((char, i) => char === str[str.length - i - 1]); } |
И еще один способ сделать это с использованием рекурсивной функции
1 2 3 4 5 6 7 8 9 10 11 |
function isPalindrome(str) { str = str.replace(/s+/g, '').toLowerCase(); if (str.length < 2) { return true; } if (str[0] !== str[str.length - 1]) { return false; } return isPalindrome(str.slice(1, -1)); } |