反转很容易实现,难的是对异常case的考虑。
比如如果没有示例,你是否会考虑到负数的情况。
10,100这个可以在写代码前问下面试官或者在代码里写明,表示你考虑到了这种情况。
然后就是有可能溢出!!
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
Here are some good questions to ask before coding. Bonus points for you if you have already thought through this!
If the integer's last digit is 0, what should the output be? ie, cases such as 10, 100.
Did you notice that the reversed integer might overflow? Assume the input is a 32-bit integer, then the reverse of 1000000003 overflows. How should you handle such cases?
For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.
class Solution {
public:
int reverse(int x) {
int res = 0;
int bval =1;
if(x<0) {x = -x;bval = -1;}
while(x)
{
if(res>INT_MAX/10||(INT_MAX - res * 10) < x % 10){return 0;}
res = res *10 + x%10;
x = x/10;
}
return res*bval;
}
};
class Solution {
public:
int reverse(int x) {
long long res = 0;
while(x) {
res = res*10 + x%10;
x /= 10;
}
return (res<INT_MIN || res>INT_MAX) ? 0 : res;
}
};