- 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
- 示例 1:
- 输入: 123
- 输出: 321
- 示例 2:
- 输入: -123
- 输出: -321
- 示例 3:
- 输入: 120
- 输出: 21
- 注意:
- 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
反转数字就是将数字的最后一位变为第一位,倒数第二位变成第二位。。。,所以我们只需要将数字从最后一位开始取,然后将之前取到的值的和乘10与当前取到的值相加即可。因为是int型的数据,我们在求和的过程中需要将和与Integer.MAX_VALUE和Integer.MIN_VALUE作比较,需要在两者之间,如不满足,则返回0。
public int reverse(int x) {
long sum = 0;
while(x != 0) {
sum = sum * 10 + x % 10;
if(sum > Integer.MAX_VALUE || sum < Integer.MIN_VALUE)
return 0;
x /= 10;
}
return (int) sum;
}
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-integer
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。