【LeetCode-Algorithms】7.Reverse Integer

题目:

Reverse digits of an integer.
Example1: x = 123, return 321Example2: x = -123, return -321
**Note:
**The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows.

题目大意:

反转数字的整数。
Example1: x = 123,return 321
Example2:x = -123,return -321

解题思路

为防止越界,直接使用long long类型来进行存储,可以简化计算。
最终输出前判断下是否溢出即可。

具体实现

//1:借用了标准中的INT_MIN和INT_MAX来判断是否越界
class Solution {
public:
    int reverse(int x) {
        long long lresult = 0;

        while(x)
        {
            lresult = lresult*10 + x%10;
            x /= 10;        
        }

        return (lresult < INT_MIN || lresult > INT_MAX)?0:lresult;
    }
};
// 使用回溯的方式来判断是否越界
public int reverse(int x)
{
    int result = 0;

    while (x != 0)
    {
        int tail = x % 10;
        int newResult = result * 10 + tail;
        if ((newResult - tail) / 10 != result)
        { return 0; }
        result = newResult;
        x = x / 10;
    }

    return result;
}

你有没有想过这个?
以下是编码前要问的一些好问题。如果您已经考虑过这一点,很赞!
如果整数的最后一位是0,输出应该是多少?即,例如10,100。
你注意到反转的整数可能会溢出吗?假设输入是一个32位整数,则1000000003的倒数溢出。你应该如何处理这种情况?
为了这个问题的目的,假设当反转的整数溢出时,你的函数返回0。

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

相关阅读更多精彩内容

友情链接更多精彩内容