@Tempest99

Как эту задачу решить с помощью JS?

Подскажите направление,необязательно полностью решение писать,просто не понимаю каким методом сделать задачу .

Пользователь вводит строку, необходимо определить
является ли она палиндромом. (Палиндром - это текст,
который читается одинаково и слева, и справа.
Примеры для тестирования:
1) '49094' – это строка палиндром
2) 'Я бы изменил мир, но бог не дает исходники' – это строка не палиндром
3) 'Сел в озере березов лес' – это строка палиндром
  • Вопрос задан
  • 17744 просмотра
Решения вопроса 4
Vlad_IT
@Vlad_IT Куратор тега JavaScript
Front-end разработчик
Самый простой способ, сравнить строку со строкой наоборот. Например было "строка", а вторая строка "акортс", и если они равны (нужно сравнивать в нижнем регистре toLowerCase), то слово палиндром, если нет, то не палиндром.
UPD: Также можно обрезать пробелы, чтобы третий пример работал.
Ответ написан
profesor08
@profesor08 Куратор тега JavaScript
Обойди циклом for строку до середины, сравнивая символ с соответствующим символом с конца.

for (let i = 0; i < string.length / 2; i++)

Получить сам символ можно string[i], как получить соответствующий с конца, подсчитаешь индекс самостоятельно.

Ввести строку можно с помощью
let string = prompt("Введи что-то:")
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
1. Сравнивать символы строки сначала и с конца строки на равном удалении по циклу.
2. При любом несовпадении (ошибке) - выходим из цикла (строка - не палиндром), иначе - это палиндром.
Ответ написан
Комментировать
@Coder321
function palindromeChecker(str) {
    str = str.toLowerCase().replace(/[^а-яa-z1-9]/gi, '');
    const lastIndex = str.length - 1;
    for (let i = 0; i < str.length / 2; i++) {
        if (str[i] !== str[lastIndex - i]) {
            return false;
        }
    }
    return true;
}

function palindromeChecker2(str) {
    str = str.toLowerCase().replace(/[^а-яa-z1-9]/gi, '');
    const halfOfLength = Math.floor(str.length / 2);
    return str.substr(0, Math.floor(halfOfLength)) === str.substr(Math.floor(str.length % 2 ? halfOfLength + 1 : halfOfLength)).split('').reverse().join('')
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@zznmga
const fn1 = (s) => s.split('').reduce((f, o, i) =>i < s.length / 2 ? s[i] === s[s.length - i - 1] && f : f, true)


или

const fn2 = (s) => s.split('').reverse().join('') == s
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
24 нояб. 2024, в 23:46
20000 руб./за проект
24 нояб. 2024, в 23:07
2000 руб./за проект