美文网首页
7. 整数反转

7. 整数反转

作者: 水中的蓝天 | 来源:发表于2022-08-08 08:22 被阅读0次

7. 整数反转

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−2^31, 2^31 − 1] ,就返回 0, 假设环境不允许存储 64 位整数(有符号或无符号)。

示例 1:
输入:x = 123
输出:321

提示:
-2^31 <= x <= 2^31 - 1

思路:
如何取出最后一位呢 ? 直接模上10就行
难点在于反转后溢出的问题,可以利用更大的数据类型来承载,或者根据溢出特征来处理




class Solution {
    
    //方式一: 使用更大的数据类型
    public int reverse1(int x) {
       /**
        之所以用long,是因为int反转后会溢出 所以用更大的数据类型来承接
        缺点:如果传入的是long类型 那同样会溢出
        */
       long result = 0;
       while(x!=0) {
           //result乘以10 加上余数
           result = result*10 + (x%10);
           if(result > Integer.MAX_VALUE) return 0;
           if(result < Integer.MIN_VALUE) return 0;
           //每次消掉一位
           x = x/10;
       }
       return (int)result;
    }

    //方式二:利用数据溢出特点
    public int reverse(int x) {
        int result = 0;    
        while(x!=0) {
            //result乘以10 加上余数
            int tmp = result*10 + (x%10);
            /** 
            思考
            如果一个值溢出会发生什么❓是不是得到的值是一个不准确的值 ?
            反之得到的是准确的值那说明反推回去是成立的; 例如 b = a*10 + m 不溢出时 (b-m)/10 == a
            */
            if((tmp - (x%10))/10 != result) return 0;
            //来到这里就说明数据正常
            result = tmp;
            //每次消掉一位
            x = x/10;
        }
        return result;
    }

}

注意:以上操作是由java语言实现 ,那在Java中 int 溢出是不会直接崩溃的;而是会截取除高位以外的数据返回;其他语言像C++是会直接崩溃,所以设计算法时要注意

相关文章

  • Leecode: 7.整数反转

    在刷Leecode, 7.整数反转思路:将整数转为string后反转,再使用int()转回整数可以顺利提交代码,但...

  • [day1] [LeetCode] [title7,9]

    7. 反转整数 给定一个 32 位有符号整数,将整数中的数字进行反转。 示例1: 输入: 123 输出: 321 ...

  • 7. 反转整数

    20180919-摘抄自7. 反转整数 给定一个 32 位有符号整数,将整数中的数字进行反转。 示例 1: 输入:...

  • 算法练习四

    7. 反转整数 给定一个 32 位有符号整数,将整数中的数字进行反转。 示例 1: 输入: 123输出: 321示...

  • LeetCodeDay07 —— 反转整数&字符串中的第一个唯一

    7. 反转整数 描述 给定一个 32 位有符号整数,将整数中的数字进行反转。 示例 注意 假设我们的环境只能存储 ...

  • 7.反转整数

    给定一个 32 位有符号整数,将整数中的数字进行反转。 示例 1: 示例 2: 示例 3: 注意:假设我们的环境只...

  • 7. 反转整数

    给定一个 32 位有符号整数,将整数中的数字进行反转。 示例 1:输入: 123输出: 321 示例 2:输入: ...

  • 7.反转整数

    题目 思路1.判断范围2.反向生成数字代码

  • 7. 反转整数

    一、题目原型: 给定一个 32 位有符号整数,将整数中的数字进行反转。输入: 123输出: 321输入: -123...

  • 7. 反转整数

    内容 给定一个 32 位有符号整数,将整数中的数字进行反转。 示例 1: 输入: 123输出: 321示例 2: ...

网友评论

      本文标题:7. 整数反转

      本文链接:https://www.haomeiwen.com/subject/uretirtx.html