Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
题目咋看起来很简单,其实,真的很简单:
class Solution
{
public:
int reverse(int x)
{
int ret = 0;
bool isNegative = false;
if (x < 0)
{
isNegative = true;
x = -x;
}
while (x)
{
ret = ret * 10 + x % 10;
x /= 10;
}
return ret * (isNegative? -1 : 1);
}
};
看这个题目一眼,就大概知道怎么写了,不过在这里,我想有必要回顾一下取余“%”的基础知识:
7 % 2 = 1
7 % -2 = 1
-7 % 2 = -1
-7 % -2 = -1
所以,正数取余,永远是正数(或者0);负数也是同样的道理;0当然永远都是0啦。
因此,我们的程序可以再简单一点:
class Solution
{
public:
int reverse(int x)
{
int ret = 0;
while (x)
{
ret = ret * 10 + (x % 10);
x /= 10;
}
return ret;
}
};
是不是很厉害,不过这当然不是我想出来的。(PS:这里都没有考虑都数值溢出的问题,不过任然可以AC)
注意细节,说不定某天你就变成大牛了。
本文介绍了一种简单的整数反转算法实现方法,通过示例代码详细解释了如何将一个整数的数字顺序进行反转,包括处理负数的情况。
18万+

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



