7. Reverse Integer
2018-11-28 本文已影响0人
gpfworld
题目描述:
https://leetcode.com/problems/reverse-integer/
解决方法:
https://leetcode.com/problems/reverse-integer/solution/
mycode(c++):
class Solution {
public:
int reverse(int x) {
int ret = 0 ;
while(x != 0){
int pop = x % 10;
x = x / 10 ;
if ( ret > INT32_MAX/10 ||( ret == INT32_MAX/10 && pop > 7)) return 0 ;
if ( ret < INT32_MIN/10 ||( ret == INT32_MIN/10 && pop < -8)) return 0 ;
ret = ret * 10 + pop ;
}
return ret;
}
};
心得:数字反转是经典思路,但是对于溢出的解决需要注意,signed int32 的范围是
-2^31 ~ 2^31-1,即-2147483648~2147483647。所以程序中才能对pop进行范围的判断。
还有就是c++中内置了,INT32_MAX和INT32_MIN不需要记忆,可以直接使用并打印就知道其值。