LeetCode - Palindrome Number - Frequent

来源:互联网 发布:爬虫软件干嘛用 编辑:程序博客网 时间:2024/06/02 09:50

https://leetcode.com/problems/palindrome-number/

这道题可以用不同的方法做,比如转换成string再对比,或者用Reverse Integer的解求出来再比较,但是这时候如果溢出的话就说明肯定不是palindrome了。

另外,题目要求不能有extra space。所以直接把首尾两位提出来,比较是否相等。当最后只剩一位或者不剩时,就说明是palindrome了。

代码如下:

    public boolean isPalindrome(int x) {        if(x<0) return false;        int rank = 1000000000;        while(rank>x){            rank /= 10;        }        if(rank <= 1) return true;        while(rank > 1){            int first = x/rank;            int last = x%10;            if(first!=last) return false;                        x = (x-first*rank)/10;            rank /=100;        }        return true;    }


这里rank其实是最大位数的10^n,比如6309对应的rank就是1000. rank从大往小算是怕,如果比较rank>x的话,容易溢出,比如Integer.MAX_VALUE, 它对应的比它大的rank就溢出了。

0 0
原创粉丝点击