Leetcode第九题 回文数字 Palindrome Number

140 阅读1分钟

题目描述:给定一个数字,如果这个数字是回文,返回true,否则返回false。

这里面有几个点需要注意:

1 负数一定不是回文,因为是以-开头的。

2 10以下的整数都是回文。

3 能被10整除的数字都不是回文,因为这些数字结尾都是0,开头一定不是0。

排除这三个条件,就直接按照回文的逻辑,拆分数字做判断就好。

代码如下:

class Solution {
    public boolean isPalindrome(int x) {
        //对特殊情况进行处理
        if(x<0) return false;
        if(x<10) return true;
        if(x%10==0) return false;
        
        int y=0;
        //开始拆分x,边界条件是x拆分到一半的位置
        while(y < x){
            //把x的值,从后往前倒装
            y=y*10 + x%10;
            //按照回文的逻辑,来判断x和y的关系
            if(y == x || y == x/10){
                return true;
            }
            //x向右移动一个位置,为下一次倒装做准备
            x=x/10;
        }
        return false;
    }
}

运行结果: Runtime: 13 ms, faster than 58.33% of Java online submissions for Palindrome Number.

Memory Usage: 44 MB, less than 22.80% of Java online submissions for Palindrome Number.