问题描述
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
问题分析
题目不难,稍微麻烦的是整型溢出。比如1234567899,倒过来是9987654321,但现在已经超出了整型的最大数了,所以,针对整型溢出需要做一定处理。
代码
class Solution {
public:
int reverse(int x) {
int y = 0;
while(x/10) {
int tmp = y*10 + (x%10);
// 判断整型溢出,如果 (tmp - x%10)/10 != y 那么就是整型溢出了
if(((tmp - x%10)/10) != y) {
return 0;
} else {
y = tmp;
}
x/=10;
}
int tmp = y*10 + (x%10);
// 判断整型溢出,如果 (tmp - x%10)/10 != y 那么就是整型溢出了
if(((tmp - x%10)/10) != y) {
return 0;
}
y = tmp;
return y;
}
};