7.整数翻转
题目描述
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
示例
示例1
输入:x = 123
输出:321
示例2
输入:x = -123
输出:-321
示例3
输入:x = 120
输出:21
示例4
输入:x = 0
输出:0
思路
从后往前遍历x,构成新的数字res,判断res时候会爆掉,如果爆掉则返回0,否则返回res。
算法
1.初始化结果变量为 res
2.开始从x后往前取数 记为pop ,x /=10
3.判断res是否会爆掉 如果 res10> MAX_VALUE 或者 res10+pop>MAX_VALUE
或者res10<MIN_VALUE 或者res10+po <MIN_VALUE 则返回0
4.res = res*10+pop;
5.返回res.
代码
class Solution {
public int reverse(int x) {
int res = 0;
while(x!=0){
int pop = x%10;
x /= 10;
if (res> Integer.MAX_VALUE/10 || (res == Integer.MAX_VALUE/10 &&pop>7)) return 0;
if(res < Integer.MIN_VALUE/10 || (res == Integer.MIN_VALUE/10 && pop<-8)) return 0;
res = res*10 +pop;
}
return res;
}
}
题目来源
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-integer
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。