leetcode 07.整数翻转

Posted 龚喜发财+1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode 07.整数翻转相关的知识,希望对你有一定的参考价值。

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

-2147483648=-231<x<231-1=2147483647

难点:给定了数值的范围,需要对结果进行判断
**解法1:**将翻转过程的结果设置成long类型的数据,在翻转完成后,对数值进行判断(好像不符合题意,但我看到大佬的解法,我内心os:牛批)

 public int reverse(int x) {
        long result=0;
           while(x!=0){
               result=result*10+x%10;
               x=x/10;
           }
       return (int)result==result? (int)result:0;
    }

long类型转换为int类型是向下转换,会发生溢出

**解法2:**因此我们需要在「推入」数字之前,判断是否满足
-231<result*10+x%10<231-1,若该不等式不成立则返回 0.

在这里插入图片描述

 public int reverse(int x) {
        int result=0;
           while(x!=0){
               if (result < Integer.MIN_VALUE / 10 || result > Integer.MAX_VALUE / 10) {
                return 0;
            }
               result=result*10+x%10;
               x=x/10;
           }
       return result;
    }
}

以上是关于leetcode 07.整数翻转的主要内容,如果未能解决你的问题,请参考以下文章

leetcode 07.整数翻转

leecode---07---数字整除取余操作,取余整除---翻转一个整数复件

LeetCode 7.整数翻转

leetcode--07 --Reverse Integer(逆转整数)

leetcode7 整数翻转(对于整数数位操作的简洁算法)

整数翻转C++实现 java实现 leetcode系列