每日一道算法题002 整数反转

167 阅读1分钟

题目

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−2^31,  2^31 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
示例 1:
输入:x = 123 输出:321
示例 2:
输入:x = -123 输出:-321
示例 3:
输入:x = 120 输出:21
示例 4:
输入:x = 0 输出:0

做题时间

class Solution {
    public int reverse(int x) {
    
    

    }
}

以上给出方法输入参数,完成作答。

题目分析

1、相当于给你一个整数,让你符号不变,从后往前读
2、当反转后整数是 int 值范围内的,则返回,否则返回 0

解答分析

本文只分析本人做题思路,仅供参考,了解一种解题思想,其他各种做题思路请上网查阅。

解答成功:
执行耗时:1 ms,击败了100.00% 的Java用户
内存消耗:35.7 MB,击败了35.17% 的Java用户

class Solution {
    public int reverse(int x) {
        //long 类型变量 m 用于输出结果
        long m = 0;
        //当整除不为 0 时继续
        while (x != 0) {
            //结果等于上次结果乘 10 加 x 取余 10 
            m = m * 10 + x % 10;
            //x 替换为 x 整除 10
            x = x / 10;
        }
        //将 m 强转成 int 类型与 long 类型 m 比,若相同则返回,否则返回 0
        return (int) m == m ? (int) m : 0;
    }
}