题目描述
给出一个整数,将其反转,但是要注意反转之后的整数大小一定要符合int范围内,如果溢出就返回0
题目链接
思路:我们可以类似于栈的方式一样用数学方法来解决这个问题,但是在转化过程中要判断是否整数溢出的情况,这里用rev来接收每次得到整数的最后一位pop,即rev = rev*10 + pop,然后用rev的值去判断是否存在整数溢出
INT_MAX = 2^31-1 = 2147483647
INT_MIN = -2^31=-2147483648
当rev > INT_MAX/10,那么这个反转整数必然溢出
同理rev < INT_MIN/10,那么这个反转整数也溢出
如果rev = INT_MAX/10 或 INT_MIN/10,那么我们只需要比较最后一位。正数:pop > 7就溢出;负数:pop < -8就溢出
代码如下
int reverse(int x