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

     

  • 相关阅读:
    redis实现电商购物车
    redis应用于各种结构型和非结构型高热度数据访问加速
    Redis控制热点新闻的实效性
    Redis实现分表操作id唯一
    KrakenD网关V1.0.0文档初步翻译
    CentOS7环境下安装Chrome
    七夕秀恩爱新姿势!这波操作我给十分!
    小程序&#183;云开发实战
    小程序&#183;云开发实战
    小程序云开发实战
  • 原文地址:https://www.cnblogs.com/mckc/p/9783885.html
Copyright © 2011-2022 走看看