Hier ist ein Schnappschuss von a problem on LeetCode:Number Für die Eingabe String: "9646324351"
Für dieses Problem bieten sie diesen Rahmen Code, den Sie ausfüllen müssen in:
public int reverse(int x) {
}
Beim Testen Lösungen, scheint es einen unangemessenen Beitrag zu liefern und lässt mich meine Lösung nicht einreichen. Der Fehler ist:
Beachten Sie, dass der Eingang 1534236469
ist. Das passt in eine int
als Eingabe, aber die umgekehrte Version, 9646324351
, natürlich nicht, wie der maximale positive Wert von int
in Java ist 2147483647
.
Ist das nur ein Fehler im LeetCode-Test? Oder gibt es einen Trick, den ich mir nicht vorstellen kann, der mich magisch 9646324351
zurückgibt, ein deutlich außerhalb des Bereichs liegender Wert, zurück von reverse
als int
?
Hier ist mein Code, aber der Code keine Rolle fast nicht, da der Rückgabetyp (int
) durch das Problem behoben ist (so durch "integer" bedeuten, dass sie wirklich int
, nicht long
):
public int reverse(int x) {
String intString;
StringBuilder sb = new StringBuilder();
if(x < 0){
sb.append("-");
x = x * -1;
}
intString = Integer.toString(x);
for(int i = intString.length() - 1; i >= 0; i--){
sb.append(intString.charAt(i));
}
String resultString = sb.toString();
int result = Integer.parseInt(resultString);
return result;
}
Es ist zu groß. Verwenden Sie Long.parseLong – Eran