Verificar si una cadena es palíndromo en Python
"En cada cadena de texto se esconden patrones, y los palíndromos nos recuerdan que la simetría también tiene su lógica en la programación."
Un palíndromo en cadenas es una palabra o frase que se lee igual de izquierda a derecha y de derecha a izquierda.
Algunos ejemplos comunes son:
"oso"
"radar"
"anita lava la tina"
En este tutorial aprenderás a detectar si una cadena es palíndromo en Python, usando diferentes métodos.
Método 1: Usando slicing en Python
Python permite invertir cadenas fácilmente con [::-1]
.
Este es el método más simple y directo.
def es_palindromo(cadena: str) -> bool:
cadena = cadena.lower().replace(" ", "")
return cadena == cadena[::-1]
print(es_palindromo("radar")) # True
print(es_palindromo("python")) # False
print(es_palindromo("Anita lava la tina")) # True
Ventajas:
- Muy corto y fácil de leer.
- Ideal para ejercicios rápidos y entrevistas.
Método 2: Usando un bucle for
Si quieres hacerlo sin atajos, puedes comparar cada carácter de la cadena con su equivalente desde el final.
def es_palindromo_bucle(cadena: str) -> bool:
cadena = cadena.lower().replace(" ", "")
for i in range(len(cadena) // 2):
if cadena[i] != cadena[-i - 1]:
return False
return True
print(es_palindromo_bucle("oso")) # True
print(es_palindromo_bucle("hola")) # False
Ventajas:
- Te ayuda a entender cómo funcionan los índices.
- Útil para comprender la lógica detrás del problema.
Método 3: Usando la función reversed()
Otra alternativa es invertir la cadena con reversed()
y luego unir los caracteres.
def es_palindromo_reversed(cadena: str) -> bool:
cadena = cadena.lower().replace(" ", "")
return cadena == "".join(reversed(cadena))
print(es_palindromo_reversed("radar")) # True
Consideraciones importantes
- Conviene normalizar el texto: pasar a minúsculas y eliminar espacios.
- Si se incluyen acentos o caracteres especiales, puede usarse
unicodedata
para normalizarlos. - Esto hace que el algoritmo sea más robusto para frases largas.
También te puede interesar: