1. 程式人生 > >LeetCode 7. 反轉整數(簡單模擬)

LeetCode 7. 反轉整數(簡單模擬)

給定一個 32 位有符號整數,將整數中的數字進行反轉。

示例 1:

輸入: 123
輸出: 321

 示例 2:

輸入: -123
輸出: -321

示例 3:

輸入: 120
輸出: 21

注意:

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

分析:注意事項就是為什麼反轉之後的整數會溢位?2^31是2147483648有10位,如果輸入整數1111111119,也是十位明顯小於2^31,但是他反轉後首位肯定大於2了。然後還有一個注意的是x是-2^31時要特判一下。

程式碼如下:

class Solution {
public:
int reverse(int x) {
    int cu[40];int k = 0;
    bool flag  = true;
    if(x==0)return 0;
    long long a = (long long)1<<31;
   if(x<0){
    if(x==1*a)return 0;
    x = -1*x;
    flag = false;
   }
       while(x>0){
        cu[k++] = x%10;
        x/=10;
    }
    long long ans = 0;
    for(int i=0;i<k;i++){
        ans = ans*10+cu[i];
    }
    if(ans>=a)return 0;
    else {
        if(!flag)ans = -1*ans;
        return ans;
    }
}
};

給定一個 32 位有符號整數,將整數中的數字進行反轉。

示例 1:

輸入: 123
輸出: 321

 示例 2:

輸入: -123
輸出: -321

示例 3:

輸入: 120
輸出: 21

注意:

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