【力扣】【初级算法】【字符串2】整数翻转

题目

整数反转
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。

假设环境不允许存储 64 位整数(有符号或无符号)。

示例 1:

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

输入:x = -123
输出:-321

作者:力扣 (LeetCode)
链接:https://leetcode.cn/leetbook/read/top-interview-questions-easy/xnx13t/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

思路

【力扣】【初级算法】【字符串2】整数翻转_第1张图片

题解


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

class Solution(object):
    def reverse(self, x):
        """
        :type x: int
        :rtype: int
        """
        # int型是32位
        # 运行过程中超过32位要return 0;
        # INT_MAX = 2147483647,INT_MIN=-2147483648 
        # 规定范围
        INT_MIN,INT_MAX = -2**31,2**31-1
        #给返回值附初值
        rev = 0
        while x!=0:
            if (rev>INT_MAX//10) or (rev<INT_MIN//10+1):
                return 0
            digit = x%10
            # python的取模运算在x为负数时也会返回(0-9)以内的结果,例如-3%10的结果是7.
            if x<0 and digit>0:
                digit-=10
            # python的整数出发在x为负会向下取整
            x = (x-digit)//10
            rev = rev*10+digit
        return rev

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