题目描述:将一个整数中的数字进行颠倒,当颠倒后的整数溢出时,返回 0 (标记为 32 位整数)。
样例:给定 x = 123,返回 321;给定 x = -123,返回 -321
从末尾起,依次输出整数的每个位,组成一个新的整数——这就是这道题所需要做的工作。
所以我们可以采用经典的”先取余,再求商“的循环,依次输出数字,再将这些数字组合起来。需要注意的是整数溢出的问题,32位int型的整数取值范围是:-2147483648(-2^31)~2147483647(2^31 - 1). 考虑到给出的整数有可能是负数,而对负数做取余,结果并不是我们想要的最后一位数字(例如:-123 % 10 = 7)
所以,可以先对整数求取绝对值,再对这个绝对值处理,最后输出结果时,若整数一开始就是负数,则再加个“-”号即可。
代码如下:
class Solution:
# @param {int} n the integer to be reversed
# @return {int} the reversed integer
def reverseInteger(self, n):
max_int = 2147483647
temp = abs(n)
result = 0
while temp > 0:
result *= 10
result += temp % 10
if result > max_int:
return 0
temp = temp // 10
return result if n >= 0 else -result
# Write your code here