import math # Top Solution class Solution: def reverse(self, x: int) -> int: MAX_INT = 2**31 - 1 # 2,147,483,647 MIN_INT = -(2**31) # -2,147,483,648 reverse = 0 while x != 0: if reverse > MAX_INT / 10 or reverse < MIN_INT / 10: return 0 digit = x % 10 if x > 0 else x % -10 reverse = reverse * 10 + digit x = math.trunc(x / 10) return reverse # Some other Solution class SolutionTwo: def reverse(self, x: int) -> int: flag = -1 if x < 0 else 1 s = str(abs(x)) x = int(s[::-1]) return x * flag if x < 2**31 else 0 class SolutionThree: def reverse(self, x: int) -> int: max_int = pow(2, 31) - 1 min_int = pow(-2, 31) flag = -1 if x < 0 else 1 ans = 0 x = abs(x) while x > 0: digit = x % 10 if ans > max_int / 10: return 0 ans = (ans * 10) + digit x //= 10 return ans * flag