Reverse Integer

Problem

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 [-2^31, 2^31 - 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

Constraints:

  • -2^31 <= x <= 2^31 - 1

Solution

This is so ugly.

class Solution {
    public int reverse(int x) {
        if (x == 0) {
            return 0;
        }
        var s = "";
        boolean isNegative = x < 0;
        if (isNegative) {
            x *= -1;
            s = "-";
        }
        while (x > 0) {
            var next = x % 10;
            s = s + String.valueOf(next);
            x = x / 10;
        }
        try {
            x = Integer.parseInt(s);
            return x;
        } catch (Exception e) {
            return 0;
        }
    }
}

Recent posts from blogs that I like

Without looking it up, what do you think?

+ links

via Henrik Karlsson

Canals of Venice 1903-1910

Pointillisme in the city, with Henri-Edmond Cross and Paul Signac, with more by John Singer Sargent, in the early years of the 20th century.

via The Eclectic Light Company

Running Llama 3.2 Vision and Phi-3.5 Vision on a Mac with mistral.rs

via Simon Willison