7. Reverse Integer

题目描述

Reverse digits of an integer.

Note: The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows.

输入与输出

class Solution {
public:
    int reverse(int x) {
        
    }
};

样例

Example1: x = 123, return 321.
Example2: x = -123, return -321.

题解与分析

新建一个整型变量,翻转即可。为了防止溢出,可以使用 long long 型变量。

C++ 代码如下:

class Solution {
public:
    int reverse(int x) {
        if (x == 0)
            return 0;
        long long y = 0;
        while (x != 0)
            y = y * 10 + x % 10, x = x / 10;
        if (y > INT_MAX || y < INT_MIN)
            return 0;
        return y;
    }
};

该算法的时间复杂度为 O(logn)(10进制表示的长度)。

如果不使用 long long 型变量,可以通过检测每次 y = y * 10 + x % 10 操作后,比较y除 10 的余数与上一次的y值,如果不同,发生溢出。经过测试,与上述方法在运行时间上没有明显差别。

你可能感兴趣的:(7. Reverse Integer)