【题目】
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
【题意】
反转int型整数,输出的也是int型的整数
【思路】
如要考虑两种特殊情况:1. 类似100这样的整数翻转之后为1
2. 翻转之后的值溢出该如何处理,
本题的测试用例中似乎没有给出溢出的情况
在实际面试时需要跟面试官明确这种情况的处理方法。
基于这点事实,本题规定如果超出正边界返回INT_MAX, 超出负边界返回INT_MIN
【代码】
class Solution {
public:
int reverse(int x) {
long long reverseX=0;
int isNegative=1;
if(x<0){
isNegative=-1;
x*=-1; //取正
}
while(x){
reverseX=10*reverseX+x%10;
x/=10;
}
reverseX*=isNegative;
if(reverseX>INT_MAX)return INT_MAX;
else if(reverseX<INT_MIN)return INT_MIN;
return (int)reverseX;
}
};