leetcode-整数倒置
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-integer
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
public class ReverseNum {public int reverse(int x) {int rev = 0;while (x != 0) {int pop = x % 10;//判断是否有越界情况x /= 10;if (rev > Integer.MAX_VALUE / 10 || ((rev == Integer.MAX_VALUE / 10) && pop > 7)) {return 0;}if (rev < Integer.MIN_VALUE / 10 || ((rev == Integer.MIN_VALUE / 10) && pop < -8)) {return 0;}rev = rev * 10 + pop;}return rev;}public static void main(String[] args) {System.out.println(new ReverseNum().reverse(2258));}
}
注意事项:
1.需要判断是否越界问题,上面两个if就是判断是否越界问题,用到了 Integer.MAX_VALUE,Integer.MIN_VALUE。
2.Java的Integer.MAX_VALUE,Integer.MIN_VALUE的值与操作系统是64还是32位无关,int占4个字节,Integer是对int的封装,同理也占4个字节。
3.类似栈的思想,pop在接受完x%10之后,在循环末尾马上就被使用了。
4.反转整数的方法可以与反转字符串进行类比。