ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

力扣 T7. 整数反转

2022-01-21 20:34:31  阅读:118  来源: 互联网

标签:return int T7 整数 else 力扣 64 反转


题意:

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [-2^{31}2^{31}-1] ,就返回 0。

假设环境不允许存储 64 位整数(有符号或无符号)。

2^{31}=2147483648

由于题目要求不能使用64位整数,不能使用64位整数判断反转后的数字是否在题目要求范围之内。因此,需要使用整型数组存储反转后的整数,再比较反转后是否超出范围。

int Reverse(int x){
    //2147483648
    int p,t=0,ans=0;                   //p标志正负,t代表位数
    int num[15]={};                    //num数组存放反转后的整数
    int nump[11]={2,1,4,7,4,8,3,6,4,7};//2的31次方-1,用于比较正数
    int numn[11]={2,1,4,7,4,8,3,6,4,8};//2的31次方,用于比较负数
    
    //先判断是正数还是负数,统一转化成正数处理
    if(x>0)p=1;
    else if(x==-2147483648||x==0)return 0;//特殊处理0和-2的31次方
    else p=0,x=-1*x;

    while(x>0)
        num[t]=x%10,x/=10,t++;

    if(t<10)                            //位数小于10位,则必然小于2的31次方=2147483648
    {                                   //直接反转
        for(int i=0;i<t;i++)
            ans=num[i]+ans*10;
        if(p==0)ans=-1*ans;
    }
    else                                //位数大于10位,需要判断。与左右的两端点逐位比较
    {
        if(p==1)                        //正数,与nump逐位比较
            for(int i=0;i<t;i++)
            {
                if(num[i]<nump[i])break;
                if(num[i]>nump[i])return 0;
            }    
        else                            //负数,与numn逐位比较
            for(int i=0;i<t;i++)    
            {
                if(num[i]<numn[i])break;
                if(num[i]>numn[i])return 0;
            }

        for(int i=0;i<t;i++)
            ans=ans*10+num[i];
        if(p==0)ans*=-1;
    }
    return ans;
}

 

标签:return,int,T7,整数,else,力扣,64,反转
来源: https://blog.csdn.net/coconutmilktea/article/details/122628345

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有