""" 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 = 123 Output: 321 Example 2: Input: x = -123 Output: -321 Example 3: Input: x = 120 Output: 21 """ def reverse(x: int) -> int: MAX_INT = 2 ** 31 - 1 MIN_INT = -2 ** 31 # Create flag of number negativity is_negative = True if x < 0 else False # Split number to list of digits splitted_number = [int(num) for num in str(abs(x))] # Reverse list reversed_list = splitted_number[::-1] # Create string from reversed list answer = "".join(str(num) for num in reversed_list) # Strip first zeroes from number answer.lstrip("0") # Convert string number to int number number_answer = int(answer) * -1 if is_negative else int(answer) # Check constraints if number_answer > MAX_INT or number_answer < MIN_INT: return 0 else: return number_answer print(reverse(-901000)) print(reverse(1534236469)) print(reverse(-65090))