Inversión de un número entero en java (pregunta sobre el método)

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.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=223761&siteId=1
Recomendado
Clasificación