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(官方)