All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g0001_0100.s0007_reverse_integer.readme.md Maven / Gradle / Ivy

There is a newer version: 1.37
Show newest version
7\. Reverse Integer

Medium

Given a signed 32-bit integer `x`, return `x` _with its digits reversed_. If reversing `x` causes the value to go outside the signed 32-bit integer range [-231, 231 - 1], then return `0`.

**Assume the environment does not allow you to store 64-bit integers (signed or unsigned).**

**Example 1:**

**Input:** x = 123

**Output:** 321 

**Example 2:**

**Input:** x = -123

**Output:** -321 

**Example 3:**

**Input:** x = 120

**Output:** 21 

**Example 4:**

**Input:** x = 0

**Output:** 0 

**Constraints:**

*   -231 <= x <= 231 - 1

To solve the Reverse Integer problem in Java using a `Solution` class, we'll follow these steps:

1. Define a `Solution` class with a method named `reverse`.
2. Initialize variables to keep track of the reversed integer (`rev`), the sign of the input integer (`sign`), and the absolute value of the input integer (`x`).
3. Iterate through each digit of the input integer `x`:
   - Extract the least significant digit using the modulo operator.
   - Update the reversed integer `rev` by multiplying it by 10 and adding the extracted digit.
   - Update `x` by removing the least significant digit using integer division.
4. Check if the reversed integer `rev` overflows the signed 32-bit integer range. If so, return 0.
5. Return the reversed integer `rev` with the appropriate sign.

Here's the implementation:

```java
public class Solution {

    public int reverse(int x) {
        int rev = 0;
        int sign = (x < 0) ? -1 : 1;
        int limit = Integer.MAX_VALUE / 10;
        int absX = Math.abs(x);

        while (absX > 0) {
            int digit = absX % 10;
            absX /= 10;

            if (rev > limit || (rev == limit && digit > 7)) {
                return 0;
            }

            if (rev < -limit || (rev == -limit && digit < -8)) {
                return 0;
            }

            rev = rev * 10 + digit;
        }

        return rev * sign;
    }

    public static void main(String[] args) {
        Solution solution = new Solution();

        // Test cases
        int x1 = 123;
        System.out.println("Example 1 Output: " + solution.reverse(x1));

        int x2 = -123;
        System.out.println("Example 2 Output: " + solution.reverse(x2));

        int x3 = 120;
        System.out.println("Example 3 Output: " + solution.reverse(x3));

        int x4 = 0;
        System.out.println("Example 4 Output: " + solution.reverse(x4));
    }
}
```

This implementation provides a solution to the Reverse Integer problem in Java.




© 2015 - 2024 Weber Informatics LLC | Privacy Policy