【嘎】整数反转

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

/**
     * OH NO !!!
     *  执行结果: 通过 
        执行用时 : 17 ms , 在所有 Java 提交中击败了 5.02% 的用户 内存消耗 : 37.6 MB , 在所有 Java 提交中击败了 5.04% 的用户
     * @param x
     * @return
     */
    public int reverse(int x) {
        String str = x + "";
        String res = "";
        boolean flag = false;
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) == '-') {
                flag = true;
                continue;
            }
            res = str.charAt(i) + res;
        }
        if (flag) {
            res = "-" + res;
        }
        int resint = 0;
        try {
            resint = Integer.parseInt(res);
            if (resint > (Math.pow(2, 31) - 1) || resint < (Math.pow(2, 31))* (-1)) {
                return 0;
            }
        } catch (Exception e) {
            return 0;
        }
       
        return resint;
    }
   
    /**
     * 直接把我KO 再看
     * @param x
     * @return
     */
    public int reverse2(int x) {
        long res = 0;
        while ( x != 0 ){
            res = res*10 + x%10;
            x = x/10;
        }
        if((int)res != res){
            return 0;
            
        } else {
            return (int) res;
        }
//        这样更简洁
//        return (int)res==res?(int)res:0;
    }

 

posted @ 2020-03-03 15:57  仓鼠爱画方格子  阅读(126)  评论(0编辑  收藏  举报