Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows.
int reverse(int x) {
int m;
vector<int> nums;
int flag = 0;
//int t = INT_MAX;
//cout<<t;
if (x > INT_MAX){
cout<<"abc";
return 0;
}
else{
if(x < 10){
flag = 1;
x = 0 - x;
}
while(x >= 10){
m = x % 10;
//cout<<m;
x /= 10;
nums.push_back(m);
}
if (x < 10){
//cout<<x;
nums.push_back(x);
}
//cout<<nums[0]<<nums[1]<<nums[2];
int l = nums.size();
//cout<<l;
int s = 1;
long long result = 0;
for(int i = l - 1; i >= 0; i--){
cout<<nums[i];
result += nums[i] * s;
s *= 10;
}
if (flag == 1){
result = 0 - result;
}
return result;
}
}
我的代码思路复杂了,是先把一整个数都拆开成了一位一位的digit存进了一个vector,然后再把每一个digit组合成一个number。
但其实不需要把拆开和合成分两个loop来做,可以一边拆解一边合成,也不需要单独的一个vector来存了。具体代码见下一篇文章用到的方法。