leetcode 7:反轉整數
阿新 • • 發佈:2019-02-06
題目:反轉整數
- 題目面述:
給定一個32位有符號整數,將整數中的數字進行反轉。
例項1:
輸入:123
輸出:321
例項2:
輸入:-123
輸出:-321
注意:
假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 [−231, 231 − 1]。根據這個假設,如果反轉後的整數溢位,則返回 0。
解法一:
[C++:]
static int x = []() {
std::ios::sync_with_stdio(false);
cin.tie(NULL);
return 0;
}();
class Solution {
public:
int reverse(int x) {
long int sum=0;
if(x<0)
{
while(x)
{
sum=sum*10+x%10;
x/=10;
}
}
else{
x=-x;
while(x)
{
sum=sum*10+x%10 ;
x/=10;
}
sum=-sum;
}
int flag=pow(2,32);
if(sum>flag-1||sum<-flag)
return 0;
else return sum;
}
};
解法二:
class Solution {
public:
#define INT_MAX 2147483647
#define INT_MIN (-INT_MAX - 1)
int reverse(int x) {
int flag = 1;//設定正負指示
if (x < 0){
flag = -1;
x = -x;
}
int num = 0;
while (x > 0){
if ((num != 0 && (INT_MAX / abs(num) < 10)) || ((unsigned int)abs(num * 10) + (unsigned int)(x % 10) > INT_MAX)){//溢位
return 0;
}
num = num * 10 + flag * (x % 10);
x = x / 10;
}
return num;
}
};