DarkLord3:
El planteamiento del problema es un poco básico - si la entrada es una salida de entero de 32 bits invertido número entero, 0 de salida demás.
Aquí está el código que se me ocurrió
public class Solution {
public int reverse(int A) {
if(A>=2143483647 || A<-2143483647)
return 0;
if(A>=0)
return Integer.parseInt((new StringBuilder(String.valueOf(A))).reverse().toString());
else
return -1*Integer.parseInt((new StringBuilder(String.valueOf(-1*A))).reverse().toString());
}
}
No se acepta la solución. El problema está en mi código o los casos de prueba?
Pratyush Pandey:
Suponiendo que la entrada es int32, aquí es un enfoque posible, incluyendo la comprobación de desbordamiento.
public class Solution {
public int reverse(int A) {
//if(A < Integer.MIN_VALUE || A > Integer.MAX_VALUE) return 0;
boolean neg = A < 0;
A = Math.abs(A);
long ret = 0;
while(A != 0){
ret = ret*10 + A%10;
A = A/10;
}
if(ret > Integer.MAX_VALUE) return 0;
return neg ? -(int)ret : (int)ret;
}
}
Sea consciente de cambiar int a long si la entrada es más grande.