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"); } |
Deje su comentario si hay alguna solución mejor.