Reverse Integer问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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问题的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 7. Reverse Integer

leetcode7. Reverse Integer

7. Reverse Integer

Reverse Integer

leetcode-7. Reverse Integer

LeetCode7Reverse Integer★