首页 > 代码库 > Reverse Integer

Reverse Integer

题目摘要:

Reverse digits of an integer.

Example1: x =  123, return  321

Example2: x = -123, return -321

  这道题不算难,主要是要考虑"反转后的值可能越界"这一种情况。(此题起初设计时,未考虑这种情况,因此网上很多旧的文章也没有处理这种情况)

一看到reverse,我就想到栈。写的代码AC了,可是太丑,下面贴出别人简洁的代码。

solution1:

int reverse(int x) {    long long res = 0;    while(x != 0)     {        res = res*10 + x%10;        x /= 10;    }    return (res<INT_MIN || res>INT_MAX) ? 0 : res;}

  此法使用long long类型来处理overflow,关于c++基本类型表示范围,参见http://blog.csdn.net/a775992553/article/details/8790241

但是,万一不让使用long long类型呢?参见下面

solution2:

int reverse(int x) {    if(x == INT_MIN)        return 0;    int res = 0;    int tmp = abs(x);    while (tmp != 0)    {        if(res > (INT_MAX - tmp%10)/10)            return 0;        res = res * 10 + tmp % 10;        tmp /= 10;    }    return x > 0 ? res : -res;}

参考文章:http://blog.csdn.net/linhuanmars/article/details/20024837

 

Reverse Integer