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
unsigned long 0~4294967295 10位 範圍是int型別資料可以表達的範圍的2倍,且不能表示負數。
long
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;
}
};