LeetCode--关于整数反转

it2022-05-05  163

LeetCode--关于整数反转

题目描述思路代码难点

题目描述

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

思路

使用Java,有符号整数的最大值为Integer.MAX_VALUE,最小值为Integer.MIN_VALUE。 初始化rev为0,利用循环,每次取出x的最后一位数,并将x缩小10倍。当n符合要求时,将rev扩大10倍,加上取出的数,直到x为0。最终打印n。

代码

public class ReversingNum { public int reverse(int x) { int rev = 0; int pop = 0; while(x != 0) { pop = x % 10; x /= 10; if(rev > Integer.MAX_VALUE / 10 || (rev == Integer.MAX_VALUE / 10 && pop > 7)) return 0; else if(rev < Integer.MIN_VALUE / 10 || (rev == Integer.MIN_VALUE / 10 && pop < -8)) return 0; rev = rev * 10 + pop; } return rev; } }

难点

这个题主要难度在于判断是否超出整数范围,记得要在扩大rev之前对rev进行判断


最新回复(0)