# Reverse digits of an integer.
#
# Example1: x = 123, return 321
# Example2: x = -123, return -321
#
# click to show spoilers.
#
# Have you thought about this?
#
# Here are some good questions to ask before coding.
# Bonus points for you if you have already thought through this!
#
# If the integer's last digit is 0, what should the output be? ie, cases such as 10, 100.
#
# Did you notice that the reversed integer might overflow?
# Assume the input is a 32-bit integer, then the reverse of 1000000003 overflows.
# How should you handle such cases?
#
# For the purpose of this problem,
# assume that your function returns 0 when the reversed integer overflows.
#
# Note:
# The input is assumed to be a 32-bit signed integer.
# Your function should return 0 when the reversed integer overflows.
class Solution():
def reverse(self, x):
l = list(str(abs(x)))
l.reverse()
rst = int(''.join(l))
if rst > 2**31:
return 0
else:
return rst if x>=0 else -rst
if __name__ == "__main__":
assert Solution().reverse(123) == 321
assert Solution().reverse(-321) == -123
assert Solution().reverse(-100) == -1
assert Solution().reverse(0) == 0
assert Solution().reverse(1000000003) == 0