Все задачи
Средне Решено: 0 Процент решений: 0%

Recursive Palindrome

Check a palindrome recursively, ignoring case and punctuation.

Чему вы научитесь

  • Проверять палиндром рекурсивно
  • Игнорировать регистр и знаки препинания
  • Сокращать задачу с обоих концов

Условие

Decide whether text reads the same forwards and backwards, considering only letters and digits and ignoring case. Solve it recursively: compare the outer characters, then check the inside.

Implement is_palindrome_recursive(text).

Input

text: The text to check (ASCII characters).

Output

Return true for a palindrome, otherwise false.

Ограничения

0 ≤ length ≤ 1,000

Примеры

Пример 1
Ввод:
text = "Never odd or even"

Ожидаемый вывод:
expected = True
Ввод:
std::string text = "Never odd or even";

Ожидаемый вывод:
bool expected = true;
Ввод:
string text = "Never odd or even";

Ожидаемый вывод:
bool expected = true;

Пояснение

Letters only, lowercased: "neveroddoreven" reads the same both ways.

Пример 2
Ввод:
text = "code"

Ожидаемый вывод:
expected = False
Ввод:
std::string text = "code";

Ожидаемый вывод:
bool expected = false;
Ввод:
string text = "code";

Ожидаемый вывод:
bool expected = false;

Пояснение

"c" and "e" differ, so it is not a palindrome.

Как подступиться

Сначала попробуйте сами, затем открывайте подсказки по одной.

Подсказка 1

Перед сравнением концов пропускай не-буквы и не-цифры.

Подсказка 2

Сначала сравни внешние символы, затем рекурсивно переходи к середине.

Подсказка 3

Пустые и односимвольные очищенные строки считай палиндромами.

Ожидаемая сложность

время O(n), доп. память O(n)

Ссылки

Это задание адаптировано для CodeUtility. Следуйте условию и ограничениям выше.

Учитесь у других

Решения сообщества

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