動機

要自己處理32位整數的溢位

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 [-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 = 123Output: 321

Example 2:

Input: x = -123Output: -321

Example 3:

Input: x = 120Output: 21

Example 4:

Input: x = 0Output: 0

 

Constraints:

  • -231 <= x <= 231 - 1

Sol

class Solution:
    def reverse(self, x: int) -> int:
        ret,minus,x,cons = 0,(x<0),abs(x),2**31
        
        while x != 0:
            ret += (x%10)
            ret, x = ret*10, x//10
        ret = ret//10
        ret = -ret if minus else ret
        return ret if -cons <= ret <= cons-1 else 0