1. 程式人生 > >leetcode7_C++整數反轉 int、long、long long取值範圍

leetcode7_C++整數反轉 int、long、long long取值範圍

小弟不才,有錯誤請指出,謝謝。

 

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

 

示例 1:

 

輸入: 123
輸出: 321

 

 示例 2:

 

輸入: -123
輸出: -321

 

示例 3:

 

輸入: 120
輸出: 21

 

注意:

 

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


 

 

 

整數反轉:

思路:其實和迴文數的思路是差不多。一個數x,把它進行生成另一個數temp,   進行%模,取位數,比如,159%10,則取出9,則y為9,然後把通過159/10,把9去掉,得到15,以此類推。

方法一:leetcode顯示20s.

class Solution {
public:
    int reverse(int x) {
        long long i=0;
        long long temp=0;//返回的結果
        int state=1;//判斷正負
        if(x<0
){ state=0; x=-x; } while(x>0){ i=x%10; if(i>=0){ temp=temp*10+i; } i=x/10; x=i; } if(state==0){ temp=-temp;//負數的話,加一個-號
} if(temp<-2147483648||temp>2147483647){ temp=0;//溢位判斷 } return temp; } };

int、long、long long取值範圍

unsigned   int   0~4294967295   
int   -2147483648~2147483647 
unsigned long 0~4294967295
long   2147483648~2147483647
long long的最大值:9223372036854775807
long long的最小值:-9223372036854775808
unsigned long long的最大值:1844674407370955161

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


 

方法二. leetocde顯示12s(官方)

 

 

unsigned   int   0~4294967295   
int   -2147483648~2147483647 
unsigned long 0~4294967295
long   2147483648~2147483647
long long的最大值:9223372036854775807
long long的最小值:-9223372036854775808
unsigned long long的最大值:1844674407370955161

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


 

方法二. leetocde顯示12s(官方)