您的位置:首页 > 编程语言 > C语言/C++

LeetCode7. Reverse Integer

2017-03-26 08:46 393 查看


1、stack

class Solution {
public:
int reverse(int x) {
if((x==0)||(x==-2147483648)){
return 0;
}
bool flag=(x<0);
x = abs(x);
int r;
stack<int> s;
while(x){
div_t dr=div(x,10);
x=dr.quot;
r=dr.rem;
s.push(r);
}
int re=s.top(),d=10;
s.pop();
while(!(s.empty())){
r = s.top();
if((re>147483647)&&(r>=2)){
return 0;
}
if(flag&&(re>147483648)&&(r>=2)){
return 0;
}
s.pop();
re+= r*d;
d*=10;
}
if(flag){
return -re;
}
else{
return  re;
}
}
};


2、vector

class Solution {
public:
int reverse(int x) {
if(x==0){
return 0;
}
if(x==-2147483648){
return 0;
}

bool flag=(x<0);
x = abs(x);
int y=x;

vector<int> v;
int r;
while(y){
div_t dr=div(y,10);
y=dr.quot;
r=dr.rem;
v.push_back(r);
}

int n=v.size();
double result=v[0];

for(int i=1;i<n;++i){
result=result*10+v[i];
}

if(flag&&(result>2147483648)){
return 0;
}
if(result>2147483647){
return 0;
}
if(flag){
return -int(result);
}
else{
return int(result);
}
}
};
void main()
{
//int x=1234567809,y;
int x=-1563847412,y;
//int x=-2147483648,y;
Solution So;
y=So.reverse(x);
cout<<y<<endl;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode c++