本文共 1178 字,大约阅读时间需要 3 分钟。
为了解决这个问题,我们需要将给定的32位有符号整数反转数字部分,并检查反转后的结果是否超过32位整数的范围。如果超出范围,则返回0。
public class Solution { public int reverse(int x) { if (x == 0) { return 0; } int sign = x < 0 ? -1 : 1; long xAbs = Math.abs((long) x); long reversed = 0; while (xAbs != 0) { int digit = (int) (xAbs % 10); xAbs /= 10; long temp = reversed * 10 + digit; if (temp > Integer.MAX_VALUE) { return 0; } if (temp < Integer.MIN_VALUE) { return 0; } reversed = temp; } if (sign == -1) { if (reversed < Integer.MIN_VALUE) { return 0; } return - (int) reversed; } return (int) reversed; }} 这种方法确保了在每一步都检查结果是否在允许范围内,从而避免了溢出或错误结果。
转载地址:http://rbse.baihongyu.com/