【力扣LeetCode】7 整數反轉

題目描述(難度易)

給出一個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。

示例 1:

輸入: 123
輸出: 321

示例 2:

輸入: -123
輸出: -321

示例 3:

輸入: 120
輸出: 21

注意:

假設我們的環境只能存儲得下 32 位的有符號整數,則其數值範圍爲 [−231, 231 − 1]。請根據這個假設,如果反轉後整數溢出那麼就返回 0。

鏈接

https://leetcode-cn.com/problems/reverse-integer/

思路

真水題,直接反轉就好了,核心點在於判斷是否溢出,要注意的有以下兩點:
1、x如果爲 −231,轉換成正數時LeetCode系統會報錯,需要用一個long long類型的數據替代x做相關處理。
2、判斷ans是否溢出,首先ans得是long long類型的數據,否則出現溢出情況就會報錯。判定最簡單的辦法就是比較ans的結果是否在 [−231, 231 − 1]區間內,不在即表示溢出。

代碼

class Solution {
public:
    int reverse(int x) {
    	long long ans = 0;
    	long long temp = x; 
    	bool flag = true;
    	if(temp < 0){
    		temp = 0 - temp;
    		flag = false;
    	}
    	while(temp){
    		ans = ans*10 + temp%10;
    		temp = temp / 10;
    	}
    	if(!flag){
    		ans = 0 - ans;
    	}
    	if(ans > pow(2, 31) - 1 || ans < (0 - pow(2, 31))){
    		ans = 0;
    	}
        return ans;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章