7. Reverse Integer

Reverse digits of an integer.

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

一刷
题解:

reverse一个整数,主要考察乘10时的overflow的问题。可以设置一个条件,当临时结果大于Integer.MAX_VALUE / 10或者临时结果小于Integer.MIN_VALUE / 10的时候,后面运算乘10肯定会溢出,所以直接return 0给出结果。

不需要处理当临时结果等于Integer.MAX_VALUE或者Integer.MIN_VALUE时的情况, 因为Integer.MAX_VALUE = 214783647,Integer.MIN_VALUE = -214783648。除以10为 21478364或者 - 21478364,假如输入是有效的Integer,最后一位必为1,否则输入不在32位int的范围里。所以此时 x % 10 = 1,临时结果result乘10再加1后不会造成最终结果溢出。

//Integer.MAX_VALUE =  2147483647
//Integer.MIN_VALUE = -2147483648
public class Solution {
    public int reverse(int x) {
        if(x == 0)
            return 0;
        int result = 0;

        while(x != 0){
            if(result > Integer.MAX_VALUE / 10 || result < Integer.MIN_VALUE / 10)
                return 0;
            result = result * 10 + x % 10;
            x /= 10;
        }
        
        return result;
    }

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容