Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
以上是题目要求。
本题较为Easy,但是值得注意的细节不少。下面贴上代码:
class Solution {
public:
int reverse(int x) {
long long int r = 0;
bool positive_sign = true;
if(x<0){
x=-x;
positive_sign = false;
}
while(x>0){
r = r*10 + x%10;
x = x/10;
}
if((r>>31)>0)
return 0;
else
return positive_sign?r:(-r);
}
};
首先是处理的思想,这种思想可以应用到判断回文中:
while(x>0){
r = r*10 + x%10;
x = x/10;
}
这种写法可以把数字反转。
其次是注意的细节,比如如何判断输入的数值超出整形的范围:
(r>>31)>0
即向右移31位,看看是否大于零(仅仅对于正数有效),因为最高位是符号位,所以只需要判断右移31位即可。