0%

Leetcode —— Reverse Integer

问题描述

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 ``.

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

自己写的解法

def reverse(x)

  return 0 if x == 0

  is_negative = x < 0

  a = x.to_s.reverse!.to_i

  a = -a if is_negative

  return 0 if a > (2**31 - 1) || a < (-2**31)

  a
end

integer转成string然后用reverse方法即可

别人家的解法

def reverse(x)
        if x.negative?
        x = (x.to_s.reverse!.to_i * -1)
    else
        x = x.to_s.reverse!.to_i
    end

    x.bit_length > 31 ? 0 : x
end

别人写的更加简洁,并且使用到了bit_lengthnegative?等内置方法

欢迎关注我的其它发布渠道