Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
非常简单的一道题,最主要的错误是没有考虑到翻转以后会越界。int 最大只能保存2^32-1 即-2147483648~~~~2147483647 ,因此在使用中间变量时使用long 类型,long类型的范围2^64(8个字节).
思路
特例:数值在-9到9之间,直接返回
(1)中间变量设为0,取得符号
(2)取最后一位end(利用对10取余)
(3)中间变量 = 中间变量*10 + end;
(4)若还未去完,重复(2)(3)
(5)若中间变量》整数最大范围,则返回0,否则,返回中间变量*符号
class Solution {
public:
int reverse(int x) {
int flag=1;
if( x<0 ) {
flag = -1;
x = -x;
}
long y = x%10;
while( x/10 != 0 )
{
x /= 10;
y *= 10;
y += x%10;
}
int temp1 = y;
if (y - temp1 != 0)
{
return 0 ;
}
else
return temp1*flag;
}
};