LeetCode探索之旅(2)

今天写第二个题目,也选的比较简单的一个。
LeetCode第七题,反转整数,例如输入346,返回643,输入-368,返回-863。

分析问题:
这个题目其实就是将一个整数分开成一位一位,然后反过来合并。其实最开始有的想法是将整数中每位求出并放入数组中,然后再将数组进行前后调转,最后得到输出结果。但是很显然这样必须牺牲掉一部分内存空间,看了网上很多例子后,发现其实可以将存入数组这一步省略掉,时间复杂度一样。通过取余以及取除,这样就可以进行翻转了。这也只是完成了一个很简单的一步,这个题目还需要一个溢出问题,因为32位的最大整数,一但翻转后的数溢出,那么就会出现bug,导致输出报错。那么这样整型溢出是其中需要考虑的一个问题。最后一个问题是符号问题,如果是负数,需要加上判断,但是网上的一个大佬是没有加负号判断,这也是没有弄清楚的。

考虑点:
1、翻转的方法
2、整型溢出
3、正负值判断

问题:
1、对最大整数的概念忘记了,如何判断?

附上代码:

class Solution {
public:
    int reverse(int x) {
        int ans=0;
        while(x){
            int tmp=ans*10+x%10;
            if(tmp/10!=ans)
                return 0;
            ans=tmp;
            x=x/10;
        }
        return ans;
    }
};

猜你喜欢

转载自blog.csdn.net/JerryZengZ/article/details/86590728
今日推荐