首页 > 代码库 > Reverse Integer问题

Reverse Integer问题

问题描述:

Reverse digits of an integer.

Example1: x = 123, return 321
Example2: x = -123, return -321

这应该算是相当简单的问题了,用%和/来不断获取整数的最低位,用atoi的思想获得转换后的数。这题考察的应该是我们的细心程度。一个合格的Reverse Integer算法应该考虑到溢出的情况。

int reverse(int x) {    int y=0;    int max=~(unsigned int)0/2;    int min=-max-1;    while(x!=0){        if(x<10&&x>-10){            if(y>max/10||y==max/10&&x>max%10)                return 0;            if(y<min/10||y==min/10&&x<min%10)                return 0;        }        y=y*10+x%10;        x/=10;    }    return y;}

这里我用了~(unsigned int)0/2来计算int的最大值,这样就保证在不同机器上都能正确地处理溢出了。

其他的似乎也没有什么好说的了。

Reverse Integer问题