Как проверить является ли строка палиндромом в Javascript?

Пользователь

от krista , в категории: JavaScript , 2 года назад

Как проверить является ли строка палиндромом в Javascript?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от richard , 2 года назад

@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"));


Пользователь

от deshaun_cormier , год назад

@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));
}