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值,如果不同,发生溢出。经过测试,与上述方法在运行时间上没有明显差别。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容