Палиндром — это строка, которая читается одинаково в обе стороны. Основная сложность здесь в том, чтобы обработать чувствительность к регистру и лишние символы перед проверкой.
Решение состоит из двух шагов:
function isPalindrome(str) {
const cleaned = str.toLowerCase().replace(/[^a-z0-9]/g, "");
return cleaned === cleaned.split("").reverse().join("");
}
toLowerCase() обеспечивает проверку без учёта регистра (например, "A" совпадает с "a").replace(/[^a-z0-9]/g, "") использует регулярное выражение для удаления всего, кроме букв и цифр.split("").reverse().join("") преобразует строку в массив, разворачивает его и объединяет обратно в строку=== возвращает true, если очищенная строка идентична своей обратной версииisPalindrome("A man, a plan, a canal: Panama"); // true
isPalindrome("race a car"); // false
[^a-z0-9] применяется после toLowerCase(), поэтому прописные буквы уже обработаныn — длина входной строкиМетод toLowerCase() должен быть вызван перед операцией replace(), чтобы убедиться, что regex паттерн [^a-z0-9] корректно совпадает со всеми символами букв.
Новый — ещё не проверен сообществом
Вы