Leetcode 7 反转整数Reverse Integer

给定一个 32 位有符号整数,将整数中的数字进行反转。

示例 1:

输入: 123
输出: 321

 示例 2:

输入: -123
输出: -321

示例 3:

输入: 120
输出: 21

注意:

假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231,  231 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。

============================================================================================================

基本思路:

对传入的整数判断,大于零可以直接处理,小于零处理0-x,输入超出范围直接return 0;

用是sstream来实现整形和字符串间相互转化:   gate:https://www.cnblogs.com/mckc/p/9671017.html

将字符串翻转后再转化为整形输出

转化为整形后记得判断整形是否超过32位,按题目要求,超过就return 0;

转化可以直接用algorithm里面的reserve函数,也可以自己用for来对调;

 

下面是ac代码:

 

class Solution {
public:

    int reverse(int x) {
        stringstream ss;
        string s1,s2;
        int y;
        if(x>2147483647||x<-2147483647)
            return 0;
        
        if(x<0){
            ss<<x;
            ss>>s1;
            for(auto s=s1.end()-1;s!=s1.begin()-1;s--){
                s2+=*s;
            }
        
            ss.clear();
            ss<<s2;
            ss>>y;
            if(y>=2147483647)
                return 0;
            return y=0-y;
        }
        
        else{
            ss<<x;
            ss>>s1;
            for(auto s=s1.end()-1;s!=s1.begin()-1;s--){
                s2+=*s;
            }
            
            ss.clear();
            ss<<s2;
            ss>>y;
            if(y>=2147483647)
                return 0;
            return y;
        }
    }

};


或者用reserve:

class Solution {
public:

    int reverse(int x) {
        stringstream ss;
        string s1;
        int y;
        if(x>2147483647||x<-2147483647)
            return 0;
        
        if(x<0){
            ss<<x;
            ss>>s1;
            std::reverse(s1.begin(),s1.end());
            ss.clear();
            ss<<s1;
            ss>>y;
            if(y>=2147483647)
                return 0;
            return y=0-y;
        }
        
        else{
            ss<<x;
            ss>>s1;
            std::reverse(s1.begin(),s1.end());
            ss.clear();
            ss<<s1;
            ss>>y;
            if(y>=2147483647)
                return 0;
            return y;
        }
    }
};

 

原文地址:https://www.cnblogs.com/mckc/p/9783885.html