Inversión de enteros
1. Título
Dado un entero de 32 bits con signo, es necesario invertir los dígitos de cada uno de los números enteros.
Ejemplo 1:
Entrada: 123
Salida: 321
Nota:
Suponiendo que nuestro entorno solo puede almacenar enteros de 32 bits con signo, el rango de valores es [−231, 231 - 1]. De acuerdo con esta suposición, si el entero se desborda después de la inversión, devuelve 0.
Fuente: LeetCode
Enlace: entero invertido
2. Análisis
Invertir un número entero es equivalente a empujarlo bit a bit y luego bit a bit. Por
ejemplo,
el orden de 123-> 12-> 1 es primero 3, luego 2 y último 1, y
el orden de inserción es primero 3, luego 2, Finalmente 1,
obtenga 3 primero y guárdelo, luego obtenga 2, 3 necesita llevar 3 10, luego presione 2, obtenga 32,
finalmente obtenga 1, 32 necesita llevar 10, obtenga 320, presione 1. Obtenga 321
este código La clave está en el juicio del rango de valores y la posición del juicio, no se puede colocar al final, lo que hará que se exceda el valor máximo o mínimo.
3. Ejemplo de código
public static int reverse(int a){
int b = 0;
int num = 0;
while(a !=0){
b=a%10;
a/=10;
if (num>Integer.MAX_VALUE/10 ||(b==Integer.MAX_VALUE/10 && b>7)) return 0;
if (num>Integer.MAX_VALUE/10 ||(b==Integer.MAX_VALUE/10 && b<-8)) return 0;
num=num*10+b;
}
return num;
}