给出一个 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; }