给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
解法1:
class Solution {
public:
int reverse(int x) {
int rev=0;
while(x!=0){
int pop=x%10;
x/=10;
rev=rev10+pop;
if(rev>INT_MAX/10||(rev=INT_MAX/10&&pop>7))
return 0;
if(rev<INT_MIN
/10||(rev=INT_MIN/10&&pop<-8))
return 0;//此处把两个if放在rev10+pop前面也可,INT_MIN必须大写
}
return rev;
}
};
解法2:
class Solution {
public:
int reverse(int x){
string s=to_string(x);
if(s[0]==’-’)
std::reverse(s.begin()+1,s.end());//std::reverse反转字符串,注意s.begin()格式
else
std::reverse(s.begin(),s.end());
long long int temp=stoll(s);//stoll()将字符串转化成longlong int型整数
if(temp>2147483637||temp<-2147483648){
return 0;
}
return temp;
}
};