Reverse Integer leetcode — wie behandeln überlauf

Das problem ist:
Reverse Ziffern einer Ganzzahl.

Beispiel1: x = 123, Rückkehr 321

Beispiel2: x = -123, zurück -321

Haben Sie bemerkt, dass die umgekehrte integer-überlauf könnte? Angenommen, dass die Eingabe einen 32-bit-Ganzzahl, die dann das Gegenteil von 1000000003 überläuft. Wie sollten Sie mit solchen Fällen?

Werfen eine Ausnahme? Gut, aber was ist, wenn eine Ausnahme zu werfen ist keine option? Sie hätten dann ein re-design der Funktion (dh, fügen Sie einen zusätzlichen parameter).

Die Lösung von der website, die ich Suche ist:

public class Solution {

     public static int reverse(int x) {
            int ret = 0;
            boolean zero = false;
            while (!zero) {
                ret = ret * 10 + (x % 10);
                x /= 10;      
                if(x == 0){
                    zero = true;
                }
            }
            return ret;   
        }

    public static void main(String[] args) {
        int s = 1000000003;
        System.out.println(reverse(s));
    }

}

Jedoch, wenn s = 1000000003 die Konsole druckt -1294967295 statt 3000000001. Also ist diese Lösung immer noch nicht behoben ist das overflow-problem, wenn man keine Ausnahme. Jede Hilfe hier?(Obwohl es einen Hinweis: fügen Sie einen zusätzlichen parameter, ich kann immer noch nicht herausfinden, welche parameter sollte ich hinzufügen)

Check out this link.

InformationsquelleAutor CSnerd | 2014-01-12

Schreibe einen Kommentar