Esta entrada forma parte de una nueva categoría de posts en este querido blog titulada: "Algoritmos notables" donde resolveremos algoritmos conocidos o como yo los llamo "Notables" 😄 que te permitirán no sólo adquirir una lógica muy buena sino también poder aplicarlos en tu día a día como programador, además de poder perder el miedo que todos sentimos al tener que pasar una prueba de código o entrevista técnica. Comencemos devs.
El texto Palíndromo
Siempre menciono que antes de meternos de cabeza a querer codear debemos entender muy bien primero los requerimientos, en este caso comencemos por el enunciado y definir que rayos es "palíndromo" si es que aún no lo googleas:
Palíndromo: Palabra o expresión que es igual si se lee de izquierda a derecha que de derecha a izquierda, por ejemplo: "Dábale arroz a la zorra el abad", "reconocer", "Ana","bgxfxgb".
El enunciado es el siguiente:
Dada una cadena de texto, debemos comprobar con un algoritmo si es palíndromo o no. Ignorar las tildes y espacios.
Análisis
"Divide y vencerás" reza la conocida frase, eso es especialmente cierto en la programación y lo pondremos en práctica ahora mismo. Analizando el problema considero que debemos aplicar los siguientes pasos:
- Limpiar el texto original, es decir quitar tildes, espacios y convertirlo a minúsculas
- Desmenuzar el texto en letras, voltear el arreglo y concatenarlo como texto
- Comparar ambos textos y si son iguales entonces es palíndromo
Ten en cuenta que hay muchas formas de resolver un algoritmo, algunas más eficientes que otras, así que la manera en la que yo resuelva el enunciado no es la única ni está escrita en piedra 😉.
Resolución en JavaScript
function isPalindromo(text){
let cleanText = text.normalize("NFD")
.replace(/[\u0300-\u036f]/g, "") //quitando tildes aplicando expresiones regulares
.replace(/ /g, "") //quitando espacios aplicando expresiones regulares
.toLowerCase(); //volviendo todo a minúscula
let invertedText = cleanText
.split('') //separando caracteres en un array
.reverse() //dando la vuelta al array
.join('') //uniendo los caracteres nuevamente en un texto
.toLowerCase(); //volviendo todo a minúscula
if(cleanText == invertedText){ //comparamos ambas cadenas
return true;
}
return false;
}
console.log(isPalindromo("Reconocer"));//devuelve true ... bien!
console.log(isPalindromo("Dábale arroz a la zorra el abad"));//devuelve true ...bien!
console.log(isPalindromo("hola"));//devuelve false ...bien!
Las expresiones regulares o RegEx son patrones para hacer coincidir caracteres, más información aquí.
Para poder ejecutar código JavaScript en tu ordenador debes Instalar NodeJS.
Una vez instalado puedes comprobar si lo tienes instalado y listo desde la Consola de Windows, Mac o de Visual Studio Code el comando:
node --version
y la consola debería arrojarte la versión de Node que tengas.
Cuando quieras ejecutar el script deberás ejecutar el comando:
node tuArchivo.js
Para que tengas una idea, esta es la forma en que yo desarrollé y probé este ejercicio de código:
En conclusión...
JavaScript nos da librerías que nos ayudan enormemente con el tratamiento de textos y podemos usarlos con propiedad al resolver nuestros retos de código, eso le mostrará a nuestro entrevistador que manejamos adecuadamente el lenguaje y nos sentimos cómodos con él, también nos ayuda en nuestra labor diaria al implementar las diversas lógicas de negocio que se nos presenten.
También es importante familiarizarnos con el entorno de ejecución JS aunque no sea el lenguaje que más dominemos, como es mi caso, ya que casi todo está relacionado con JavaScript hoy en día, recuerda que es el lenguaje de la Web, siempre viene bien conocerlo al menos en un término medio.
Ahora es tu turno, intenta desarrollarlo en otro lenguaje como C#, y recuerda: lo más importante no es memorizarte el lenguaje sino saber resolver problemas, si tienes claro los pasos a seguir para resolver un problema de código lo demás es pan comido crack!
Recuerda que esta entrada es de la serie de artículos Algoritmos notables, los cuales los subo a este repo, puedes visitarlo y descubrir más algoritmos 😊
Si esta entrada te ha encantado, compártela genio 😉
3 comentarios en «Resolviendo algoritmos notables: El texto palíndromo»