From 6fd666256ae7311579474f18f0ebbbb8d6386bd5 Mon Sep 17 00:00:00 2001 From: Andrei Ovcharenko Date: Sat, 1 Aug 2026 04:53:03 +0300 Subject: [PATCH] Handle overflow when reversing integers --- src/main/java/other/ReverseInt.java | 12 ++++-------- src/test/java/other/ReverseIntTest.java | 4 +++- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/main/java/other/ReverseInt.java b/src/main/java/other/ReverseInt.java index 878428b..e2c6764 100644 --- a/src/main/java/other/ReverseInt.java +++ b/src/main/java/other/ReverseInt.java @@ -1,17 +1,13 @@ package other; -import static common.SafeParse.parseInt; - - public class ReverseInt { public static int reverse(int x) { - if (x >= 0) { - return parseInt(new StringBuilder(String.valueOf(x)).reverse().toString()); - } else { - return parseInt(new StringBuilder(String.valueOf(x).substring(1)).reverse().toString()) * -1; - } + long reversed = Long.parseLong(new StringBuilder(String.valueOf(Math.abs((long) x))).reverse().toString()); + reversed = x < 0 ? -reversed : reversed; + + return reversed < Integer.MIN_VALUE || reversed > Integer.MAX_VALUE ? 0 : (int) reversed; } } diff --git a/src/test/java/other/ReverseIntTest.java b/src/test/java/other/ReverseIntTest.java index 2671789..627fb7e 100644 --- a/src/test/java/other/ReverseIntTest.java +++ b/src/test/java/other/ReverseIntTest.java @@ -16,7 +16,9 @@ class ReverseIntTest { "-123, -321", "120, 21", "-120, -21", - "1000000001, 1000000001" + "1000000001, 1000000001", + "1534236469, 0", + "-2147483648, 0" }) void shouldReverseIntegerDigits(int input, int expected) { assertEquals(expected, ReverseInt.reverse(input));