• 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;
            }
        }
    };

     

  • 相关阅读:
    hihoCoder #1179 : 永恒游戏 (暴力枚举)
    HDU 5269 ZYB loves Xor I (二分法)
    HDU 5268 ZYB loves Score (简单模拟,水)
    acdream 1683 村民的怪癖(KMP,经典变形)
    acdream 1686 梦醒(时钟重合)
    acdream 1685 多民族王国(DFS,并查集)
    acdream 1681 跳远女王(BFS,暴力)
    HDU 5265 pog loves szh II (技巧)
    HDU 5264 pog loves szh I (字符串,水)
    HDU 1023 Train Problem II (卡特兰数,经典)
  • 原文地址:https://www.cnblogs.com/mckc/p/9783885.html
Copyright © 2020-2023  润新知