每日一题-Day14-整数反转

题目

给定数字x,输出 反转后的数字,不能超过int的存储范围

解题思路

​ 求模取余

​ 将数字x进行10的求模取余,再将取得的余数每次*10加上新的余数,注意点在于不能超过int的存储范围,即-2147483648到+2147483647,所以当res为214748364时,下一个余数不能超过7,否则会超过范围,同理可得负数的判定方式

class Solution {
    public int reverse(int x) {
        int res = 0;
        while(x!=0) {
            //每次取末尾数字
            int tmp = x%10;
            //判断是否 大于 最大32位整数
            if (res>214748364 || (res==214748364 && tmp>7)) {
                return 0;
            }
            //判断是否 小于 最小32位整数
            if (res<-214748364 || (res==-214748364 && tmp<-8)) {
                return 0;
            }
            res = res*10 + tmp;
            x /= 10;
        }
        return res;
    }
}

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-integer/submissions/

更详细的题解:
链接:https://leetcode-cn.com/problems/reverse-integer/solution/tu-jie-7-zheng-shu-fan-zhuan-by-wang_ni_ma/

上一篇:剑指offer-1整数除法


下一篇:动态规划