美文网首页
7. Reverse Integer

7. Reverse Integer

作者: yansh15 | 来源:发表于2017-07-10 20:59 被阅读0次

    题目描述

    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

          本文链接:https://www.haomeiwen.com/subject/pfyuhxtx.html