Todos los desafíos
Intermedio 0 resueltos 0% de aceptación

Recursive Palindrome

Check a palindrome recursively, ignoring case and punctuation.

Lo que aprenderás

  • Comprobar palíndromos con recursión
  • Ignorar mayúsculas y signos de puntuación
  • Reducir el problema desde ambos extremos

Problema

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.

Restricciones

0 ≤ length ≤ 1,000

Ejemplos

Ejemplo 1
Entrada:
text = "Never odd or even"

Salida esperada:
expected = True
Entrada:
std::string text = "Never odd or even";

Salida esperada:
bool expected = true;
Entrada:
string text = "Never odd or even";

Salida esperada:
bool expected = true;

Explicación

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

Ejemplo 2
Entrada:
text = "code"

Salida esperada:
expected = False
Entrada:
std::string text = "code";

Salida esperada:
bool expected = false;
Entrada:
string text = "code";

Salida esperada:
bool expected = false;

Explicación

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

Cómo abordarlo

Inténtalo primero por tu cuenta y luego abre las pistas una a una.

Pista 1

Salta los caracteres que no sean letras ni dígitos antes de comparar los extremos.

Pista 2

Compara primero los caracteres exteriores y luego recurre sobre la parte central restante.

Pista 3

Trata como palíndromos las subcadenas limpias vacías y de un solo carácter.

Complejidad esperada

tiempo O(n), espacio extra O(n)

Referencias

Este reto está adaptado para CodeUtility. Sigue el enunciado y las restricciones indicadas arriba.

Aprende de otros

Soluciones de la comunidad

Aún no hay soluciones publicadas. Resuelve este reto para compartir la primera.