Categorías
Algorithms

LeetCode – Entero inverso

LeetCode – Entero inverso:

Dígitos inversos de un número entero.
Ejemplo 1: x = 123, devuelve 321
Ejemplo 2: x = -123, devuelve -321

1. Método ingenuo

Podemos convertir el número entero en una matriz de cadena / caracteres, invertir el orden y convertir la matriz de cadena / caracteres de nuevo en un número entero. Sin embargo, esto requerirá espacio adicional para la cuerda. No parece ser la forma correcta, si viene con una solución de este tipo.

2. Enfoque eficiente

En realidad, esto se puede hacer usando el siguiente código.

public int reverse(int x) {
	//flag marks if x is negative
	boolean flag = false;
	if (x < 0) {
		x = 0 - x;
		flag = true;
	}
 
	int res = 0;
	int p = x;
 
	while (p > 0) {
		int mod = p % 10;
		p = p / 10;
		res = res * 10 + mod;
	}
 
	if (flag) {
		res = 0 - res;
	}
 
	return res;
}

3. Solución sucinta

Esta solución es de Jerez, es sucinta y es bonita.

public int reverse(int x) {
    int rev = 0;
    while(x != 0){
        rev = rev*10 + x%10;
        x = x/10;
    }
 
    return rev;
}

Manejar el problema fuera de rango

A medida que formamos un nuevo entero, es posible que el número esté fuera de rango. Podemos usar el siguiente código para asignar el entero recién formado. Cuando esté fuera de rango, lanza una excepción.

try{
  result = ...;
}catch(InputMismatchException exception){
  System.out.println("This is not an integer");
}
  LeetCode - Palíndromo válido (Java)

Deje su comentario si hay alguna solución mejor.

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

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