classSolution { publicintreverse(int x) { if (x < Integer.MIN_VALUE || x > Integer.MAX_VALUE) { return0; } intnum= x > 0 ? x : -x; StringBuilders=newStringBuilder(String.valueOf(num)); int result; try { result = Integer.valueOf(s.reverse().toString()); } catch (NumberFormatException e) { result = 0; } result = x > 0 ? result : -result; return result; } }
分拆数字逆序
上面使用try-catch来处理转换后的数字超过整形范围的情况,这类似于使用try-catch来代替 if 语句处理业务逻辑,这是不建议的。而且,上面使用库函数虽然比较方便,但是效率上却有点低,我们可以使用另外一种方式来提高一下效率。首先,将整数的每个数字取出放在数组中,然后将数字逆序拼接成新的整数,在拼接的过程中判断是否会超出整形范围,超出则返回0。代码如下