Reverse Integer

Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
    解析:此问题难点溢出,比如,输入1234567899,反转后的数字为9987654321,该数字大于最大的整数,我们应该输出0。
    方法一:首先我们把整数转换为字符串,然后对该字符串进行反转,最后判断反转以后的数字是否大于最大整数,是否小于最小的整数,如果是,则输出为0,如果不是,输出当前的数字。
int reverse(int x) 
{
        if(x == 0)
            return 0;
        if(x == -2147483648)
            return 0;
        int num = abs(x);
    	string str = "";
    	while (num)
    	{
    		str.push_back((num % 10) + '0');
    		num /= 10;
    	}
    	long long val = stoll(str);
    	if(x >= 0)
    	{
    	   if (val >= 2147483648)
    		    return 0;
    	   return val; 
    	}
    	else
    	{
    	    if(val > 2147483648)
    	        return 0;
    	    return -val;
    	}
}

方法二:直接用一个long整型数接受反转以后的结果,然后与最大整数和最小整数比较。
int reverse(int x) 
{
        long res = 0;
    	while (x)
    	{
    		res = res * 10 + x % 10;
    		x /= 10;
    	}
    	return res > INT_MAX || res < INT_MIN ? 0 :(int)res;
}

你可能感兴趣的:(Reverse Integer)