力扣算法数学类—整数反转

目录

整数反转

题解:

代码:


整数反转

7. 整数反转 - 力扣(LeetCode)

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

提示:

  • -231 <= x <= 231 - 1

题解:

如何反转整数
用栈?或者变成字符串,再去反转字符串?
这两种方式是可以,但并不好。实际上我们只要能拿到这个整数的 末尾数字 就可以了。
以12345为例,先拿到5,再拿到4,之后是3,2,1,我们按这样的顺序就可以反向拼接处一个数字了,也就能达到 反转 的效果。
怎么拿末尾数字呢?模除运算

循环的判断条件:

x>0?但这样不对,因为忽略了 负数
循环的判断条件应该是while(x!=0),无论正数还是负数,按照上面不断的/10这样的操作,最后都会变成0,所以判断终止条件就是!=0

数值范围为 [−2^31,  2^31 − 1]

首先2^31=2147483648

所以我们在把最后一位存储到res中前判断其大小是否溢出

代码:

class Solution {
    public int reverse(int x) {
        int res=0;
        while(x!=0){
            int temp=x%10;
            if(res>214748364||res==214748364&&temp>7){
                return 0;
            }
            if(res<-214748364||res==-214748364&&temp<-8){
                return 0;
            }
            res=res*10+temp;
            x/=10;
        }
        return res;
    }
}

你可能感兴趣的:(题解,算法,leetcode,职场和发展)