leetcode 7.整数反转

看到这题最直接的思路,是想着先转化为字符串再反转,然后转化为整数输出。转化为输出的时候需要考虑溢出的情况。而且如何对负数的字符串进行处理每个人也有各自的方法。

以下记录一个看到的题解比较清晰的实现

复制代码
class Solution
{
public:
    int reverse(int x)
    {
        long result; //利用long避免溢出
        if (x == INT_MIN)
        {
            return 0;
        }
        if (x < 0)
        {
            return -reverse(-x);
        }
        stringstream ss;
        ss << x;
        string tmpStr;
        ss >> tmpStr;

        int tmpStrSize = int(tmpStr.size());
        string resultStr;
        for (int index = tmpStrSize - 1; index >= 0; index--)
        {
            resultStr.push_back(tmpStr[index]);
        }
        ss.clear(); //使用前记得clear
        ss << resultStr;
        ss >> result;
        if (result > INT_MAX)
        {
            return 0;
        }
        return int(result);
    }
};

作者:pinku-2
链接:https://leetcode-cn.com/problems/reverse-integer/solution/zheng-shu-fan-zhuan-cshi-xian-liang-chong-jie-fa-z/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
复制代码

 

另一种实现思路,不需要经过转化。每次提取末尾数字放到开头,同时检查是否溢出。

复制代码
class Solution {
public:
    int reverse(int x) {
        int rev = 0;
        while (x != 0) {
            int pop = x % 10;
            x /= 10;
            if (rev > INT_MAX/10 || (rev == INT_MAX / 10 && pop > 7)) return 0;
            if (rev < INT_MIN/10 || (rev == INT_MIN / 10 && pop < -8)) return 0;
            rev = rev * 10 + pop;
        }
        return rev;
    }
};
复制代码

 

posted @   布羽  阅读(132)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示