LeetCode Reverse Integer

本文介绍了一种用于翻转32位带符号整数的算法,并提供了两种实现方式:一种利用字符串反转,另一种为快速算法。同时讨论了整数溢出处理的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、题目

Given a 32-bit signed integer, reverse digits of an integer.

Example 1:

Input: 123
Output: 321
Example 2:

Input: -123
Output: -321
Example 3:

Input: 120
Output: 21
Note:
Assume we are dealing with an environment which could only hold integers within the 32-bit signed integer range. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.

二、代码

采用字符串反转

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

    if(x==0)
        return 0;
    string tem="";

    stringstream ss;
    ss << abs(x);
    string str = ss.str();
    str.erase(0, str.find_first_not_of('0'));
    for (string::reverse_iterator it = str.rbegin(); it != str.rend(); it++)
    {
        tem += *it;
    }

    long long num;
    stringstream temstr(tem);
    temstr>>num;
    if(num>0x7fffffff)
        num = 0;
    return x<0?-num:num;

    }
};

快算法:

static int x = []() { 
    std::ios::sync_with_stdio(false);  //cin,cout效率低是因为要把输入、输出的东西存入缓冲区,再输入、输出,导致效率降低。该语句可以来取消iostream的输入、输出缓存,使效率与scanf与printf相差无几。C++为了兼容C,保证程序在使用了std::printf和std::cout的时候不发生混乱,将输出流绑到了一起。
    cin.tie(NULL);//默认的情况下cin绑定的是cout,每次执行 << 操作符的时候都要调用flush,会增加IO负担。可以通过tie(0)(0表示NULL)来解除cin与cout的绑定,进一步加快执行效率。  
    return 0; 
}();

class Solution {
public:
    int reverse(int x) {
        long long answer = 0;
        while (x) {
            answer = answer * 10 + x % 10;
            x /= 10;
        }
        return (answer > INT_MAX || answer < INT_MIN)?0:(int)answer;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值