Функция SingleCharacterPalindrome

Функция SingleCharacterPalindrome


Ответ:

function isPalindrome(str) {
  return str === str.split("").reverse().join("");
}

function SingleCharacterPalindrome(str) {
  if (isPalindrome(str)) {
    return "OK";
  }

  for (let i = 0; i < str.length; i++) {
    if (isPalindrome(str.slice(0, i) + str.slice(i + 1))) {
      return "remove one";
    }
  }

  return "not possible";
}

Объяснение:

Для начала создадим вспомогательную функцию isPalindrome , которая принимает строку и сравнивает её с развёрнутой версией самой себя. Далее в основной нашей функции проверяем, является ли входная строка палиндромом. Если да, то возвращаем "OK" . Затем в цикле проходимся по каждой букве, с помощью метода slice удаляем её и проверяем, является ли палиндромом получившаяся строка. Если да - возвращаем "remove one", если ни разу не получилось, то возвращаем "not possible".

Код для проверки:

function isPalindrome(str) {
  return str === str.split("").reverse().join("");
}

function SingleCharacterPalindrome(str) {
  if (isPalindrome(str)) {
    return "OK";
  }

  for (let i = 0; i < str.length; i++) {
    if (isPalindrome(str.slice(0, i) + str.slice(i + 1))) {
      return "remove one";
    }
  }

  return "not possible";
}

console.log(SingleCharacterPalindrome("abba")); // "OK"
console.log(SingleCharacterPalindrome("abbaa")); // "remove one"
console.log(SingleCharacterPalindrome("abbaab")); // "not possible"
console.log(SingleCharacterPalindrome("madmam")); // "remove one"
console.log(SingleCharacterPalindrome("raydarm")); // "not possible"
console.log(SingleCharacterPalindrome("hannah")); // "OK"


Report Page