題目描述(難度易)
給出一個 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;
}
};