给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-integer
输入:x = 123 输出:321
输入:x = 120 输出:21
遇到的问题:
使用stoi(),如果超过int范围就会出现异常。使用stringstream类来将字符串转化成整数
class Solution {
public:
int reverse(int x) {
int flag=0,i=0;
long int res;
if(-10<x&&x<10) return x;
if(x<0){
flag=1;
}
string s=to_string(x);
std::reverse(s.begin(),s.end());
cout<<s;
while(1)
{
if(s[0]=='0') s.erase(s.begin());
else break;
}
cout<<s;
stringstream ss(s);
ss>>res;
if((res>2147483647&&flag==0)||(res>=2147483648&&flag==1))return 0;
else{
if(flag==1) return -res;
else return res;
}
}
};