1. 程式人生 > >Leetcode------7. 反轉整數

Leetcode------7. 反轉整數

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

示例 1:

輸入: 123
輸出: 321

 示例 2:

輸入: -123
輸出: -321

示例 3:

輸入: 120
輸出: 21

注意:

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

------------------------------------------------------------------------------------------------------------------------------------------------------------------------

學到了,,,之前學的時候都沒有注意過,沒想到還能用的到,學到了。

unsigned   int   0~4294967295                                    10位     範圍是int型別資料可以表達的範圍的2倍,且不能表示負數。
int   -2147483648~2147483647 

                                10位
unsigned long 0~4294967295                                     10位     範圍是int型別資料可以表達的範圍的2倍,且不能表示負數。
long
   -2147483648~2147483647                               10位     雖然型別是long,但是和int的資料型別可以表達的範圍相同。
long long的最大值:9223372036854775807               19位      long long資料型別可以表示更大的資料範圍。 
long long的最小值:-9223372036854775808              19位
unsigned long long的最大值:18446744073709551615

__int64的最大值:9223372036854775807
__int64的最小值:-9223372036854775808
unsigned __int64的最大值:18446744073709551615

AC:

class Solution {
public:
    int reverse(int x) {
        int max=0x7fffffff;               //int能表示的最大的資料就可以寫成 0x7fffffff   
        int min=0x80000000;         //int能表示的最小的資料就可以寫成0x80000000
        long long ans=0;                //ans的資料型別要設為long long 不然ans可能會裝不下反轉後的數,例如int下的最大值反轉後
        while(x!=0)                         //就會超過int的最大值。
        {
            ans=ans*10+x%10;
            x=x/10;
        }
        if (ans>max||ans<min)      //如果數字反過來寫溢位的話,那麼就重置為0.
        {
            ans=0;
        }
        return ans;
    }
};