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位即可。