LeetCode OJ刷題歷程——Reverse Integer

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章