zoukankan      html  css  js  c++  java
  • 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;
            }
        }
    };

     

  • 相关阅读:
    PHP中的无限级分类
    JS中json数据格式取值实例
    PHP中类的延迟绑定
    电阻
    不能做“没事找抽型”投资者
    Delphi相关文件扩展名介绍
    三极管
    沃伦·巴菲特
    电压,电流,电阻的关系就是欧姆定律
    CnPack 使用的组件命名约定
  • 原文地址:https://www.cnblogs.com/mckc/p/9783885.html
Copyright © 2011-2022 走看看