Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
click to show spoilers.
Have you thought about this?
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.
Update (2014-11-10):
Test cases had been added to test the overflow behavior.
非常优雅的解决方案:
class Solution {
public:
int reverse(int x)
{
static const int overflow = INT_MAX/10;
const int mod = x>0 ? 10 : -10;
int r = 0;
while(x)
{
if(r > overflow || r < -overflow)
return 0;
r = (x % mod) + r * 10;
x = x / 10;
}
return r;
}
};

本文介绍了一种优雅的整数反转算法实现方案,并考虑了诸如溢出处理等特殊情况。该算法适用于32位整数,通过逐步处理每一位数字来避免可能发生的溢出问题。
149

被折叠的 条评论
为什么被折叠?



