首页 > 其他 > 详细

leetcode 7 整数翻转

时间:2021-03-07 22:07:40      阅读:24      评论:0      收藏:0      [点我收藏+]

选了个先转换成字符串,然后再翻转的做法,虽然效率不差,但属实有点拉,贴代码

class Solution {
public:
    char* inttoString(int a,char* b)
    {
        int t = a/10;
        if(t!=0)
        {
            b = inttoString(a/10,b) +1;
        }
        *b = a%10 + 0;
        return b;
    }
    int reverse(int x) 
    {
        if(x == -2147483648)
        return 0;
        bool fu = false;
    //  long t = x;
        if(x<0)
        {
            fu = true;
            x = -x;       
        }
        char a[20];
        memset(a,\0,sizeof(a));
        inttoString(x,a);
        int i = 0;
        while(a[i]!=\0)
        {
            i++;
        }
        long k = 0;
        for(int j = i-1 ; j>=0 ; j--)
        {
            k = (a[j]-0) + k*10;
            if(k>(pow(2,31)-1))
            return 0;
        }
        if(fu)
        k = -k;
        return k;
    }
};

还有一种方法,直接通过取余的方式求出当前最小一位数,然后将x除以10,算是比较巧妙的方法,就是两个边界条件,需要进行计算,贴代码

class Solution {
public:
    int reverse(int x) 
    {
        int rec = 0;
        while(x!=0)
        {
            int pop = x%10;
            x = x/10;
            if(rec>INT_MAX/10 || (rec ==INT_MAX/10 && pop == 7 ))
            return 0;
            if(rec<INT_MIN/10 || (rec ==INT_MIN/10 && pop == -8 ))
            return 0;
            rec = rec*10 + pop;
        }
        return rec;
    }
};

 

leetcode 7 整数翻转

原文:https://www.cnblogs.com/zhaohhhh/p/14495776.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!