【LeetCode】7. Reverse Integer

1.题目

Given a 32-bit signed integer, reverse digits of an integer.

Example 1:

Input: 123
Output: 321

Example 2:

Input: -123
Output: -321

Example 3:

Input: 120
Output: 21

Note:
Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−231, 231 − 1]. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.

2.分析

读完题目,这道题如何去做的思路基本上也就出来了,主要涉及到实际编程中$int$类型数据的范围,避免出现溢出。其中$int$的范围为:
$$
-2^{31} \sim 2^{31}-1
$$

3.编程实现

public class ReverseInteger {
    public int reverse(int x) {
        long res = 0;       // 定义结果,倒过来可能越界,使用long类型
        while (x != 0){
            res = res *10 + x % 10;
            x /= 10;
            if (res > Integer.MAX_VALUE || res < Integer.MIN_VALUE) return 0;
        }
        return  (int)res;
    }
}

4.结果分析

由于其遍历的次数为数字的位数,则其时间复杂度为$O(n)$,在空间复杂度上,只定义了一个res,所以空间复杂度为$O(1)$

5.个人订阅号

第一个订阅号侧重于:使用c/c++/java去实现一些经典算法,以及javaEE开发,Linux服务器操作等。第二个订阅号主要侧重于机器学习,深度学习,数学,自然语言处理等方面的知识。







  目录