Lectura

¿Alguna vez te has preguntado si un número es palíndromo? Un número palíndromo es un número que se lee igual de izquierda a derecha que de derecha a izquierda. Por ejemplo, 121, 1001 y 929 son números palíndromos.

El algoritmo a realizar consiste en revertir el número y compararlo con el número original. Si los dos números son iguales, entonces el número original es un palíndromo.

Para este ejercicio, vamos a verificar si un número es palíndromo y como condición particular no vamos a convertir los integer en strings.

x = 121 Es palíndromo x = 432 No es palíndromo

Explicación del ejercicio Paso por paso

Código de la solución

Java

class Solution {
    public boolean isPalindrome(int x) {
        if (x < 0 || (x % 10 == 0 && x != 0)) {
            return false;
        }

        int original = x;
        int invertido = 0;

        while (x > 0) {
            int ultimoDigito = x % 10;
            invertido = (invertido * 10) + ultimoDigito;
            x /= 10;
        }

        return original == invertido;
    }
}

Python

class Solution(object):
    def isPalindrome(self, x):
        if x < 0 or (x % 10 == 0 and x != 0):
            return False

        original = x
        invertido = 0

        while x > 0:
            ultimo_digito = x % 10
            invertido = (invertido * 10) + ultimo_digito
            x //= 10

        return original == invertido

PHP

class Solution {

    /**
     * @param Integer $x
     * @return Boolean
     */
    function isPalindrome($x) {
        if ($x < 0 || ($x % 10 === 0 && $x !== 0)) {
            return false;
        }

        $original = $x;
        $invertido = 0;

        while ($x > 0) {
            $ultimoDigito = $x % 10;
            $invertido = ($invertido * 10) + $ultimoDigito;
            $x = intdiv($x, 10);
        }

        return $original === $invertido;
    }
}

C++

class Solution {
public:
    bool isPalindrome(int x) {
        if (x < 0 || (x % 10 == 0 && x != 0)) {
            return false;
        }

        long original = x;
        long invertido = 0;

        while (x > 0) {
            int ultimoDigito = x % 10;
            invertido = (invertido * 10) + ultimoDigito;
            x /= 10;
        }

        return original == invertido;
    }
};

JavaScript

/**
 * @param {number} x
 * @return {boolean}
 */
var isPalindrome = function(x) {
    if (x < 0 || (x % 10 === 0 && x !== 0)) {
        return false;
    }

    let original = x;
    let invertido = 0;

    while (x > 0) {
        let ultimoDigito = x % 10;
        invertido = (invertido * 10) + ultimoDigito;
        x = Math.floor(x / 10);
    }

    return original === invertido;
};

Si te gustó el contenido, ¡visita mi canal de YouTube para ver más explicaciones sobre algoritmos y estructuras de datos!