LeetCode: Reverse Integer

Question

Given a 32-bit signed integer, reverse digits of an integer.

Note: Assume we are dealing with an environment that could only store integers within the 32-bit signed integer range: [−231, 231 − 1]. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.

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

Solution

def reverse(x)
  if x >= 0
    x = x.to_s.reverse.to_i
    if x < -2**31 || x > 2**31 - 1
      0
    else
      x
    end
  else
    x = x.to_s.reverse.chop.insert(0, '-').to_i
    if x < -2**31 || x > 2**31 - 1
      0
    else
      x
    end
  end
end