LeetCode探索之旅(3)

第三天刷LeetCode,坚持!加油!
今天刷第九题,判断一个整数是否为回文数,例如输入121,输出true,输入-121,输出false;

分析:
首先这个应该是很常见的一个简单题,看到这个题目的时候第一反应还是用数组、或者容器之类的牺牲空间的情况下来解决这个问题,这个思想其实应该改变一下了。看到网上的一个题目讲解是不能借助其他空间,虽然题目没有给出,但是这个题目确实可以不借助其他空间来解决。因为之前已经知道了如何求解一个整数的反转,这个时候就可以通过反转该整数,然后比较反转前后两个数是否相等就可以得到结果了,其中要注意负号的问题。当用这个方法后,看了一下别人的提交结果,发现还有更加优化的方法。上一个方法中时不管正负数还是0都统一进行反转,然后继续判断,这个优化的地方就是在反转之前,判断是否是负数,是的话就直接输出false,这样可以节约一半的计算,并且判断最后一位是否为0,如果为0,同样输出false,因为反转后的数肯定和之前的数不同,这进一步节约了计算量。

问题:
1、考虑问题不够周全,将问题要细分清楚
2、适当改变字符串思维

附上代码:

class Solution {
public:
    bool isPalindrome(int x) {
        int a=0;
        int b;
        b=x;
        while(b>0)
        {
            a=a*10+b%10;
            b=b/10;
        }
        if(x==a)
            return true;
        else
            return false;
    }
};

猜你喜欢

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