7. 整数反转

一、题目

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

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

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

二、思路

三、代码

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;
    }
}

四、分析

复杂度分析

  • 时间复杂度: O(log∣x∣)。翻转的次数即 x 十进制的位数。
  • 空间复杂度: O(1)。

 

posted @ 2023-06-23 10:40  ImreW  阅读(12)  评论(0)    收藏  举报