Resolviendo algoritmos notables: El texto palíndromo
Tan importante como saber de habilidades blandas es saber también resolver algoritmos conocidos con JS y C#. Anímate a practicarlo y pasa exitosamente tus entrevistas técnicas crack!

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:

Testing 😉

Código disponible también en https://github.com/GeaSmart/NotableAlgoritms-palindrome

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!

Si esta entrada te ha encantado, compártela genio 😉

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *