LeetCode第九题—— Palindrome Number(判断回文数)

Posted mgblog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode第九题—— Palindrome Number(判断回文数)相关的知识,希望对你有一定的参考价值。

题目描述

Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.

Example 1:

Input: 121
Output: true

Example 2:

Input: -121
Output: false
Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.

Example 3:

Input: 10
Output: false
Explanation: Reads 01 from right to left. Therefore it is not a palindrome.

My solution(10ms,36.5MB)

整形转换成字符型,然后进行颠倒转换

 

class Solution {
    public boolean isPalindrome(int x) {
        if(x<0){
            return false;
        }else{
            String a = x + "";
            String aReverse = new StringBuilder(a).reverse().toString();
            if(a.equals(aReverse)){
                return true;
            }else{return false;}
        }
    }
}

 

Other solution(6ms,35.1MB):

这个方法很神奇啊!Ψ( ̄∀ ̄)Ψ

先排除负数,然后把整数分成两个部分,x为前一半,rev为后一半,例:32499423

并且rev还是已经倒转过后的数字,即3249

最后比较一下两个是否相同

 


如果是奇数个数字,例:12321

则rev为123,x为12

然后比较123/10=1212是否相等

class Solution {
   public boolean isPalindrome(int x) {
        if (x<0 || (x!=0 && x%10==0)) return false;
        int rev = 0;
        while (x>rev){
            rev = rev*10 + x%10;
            x = x/10;
        }
        return (x==rev || x==rev/10);
    }
}

 

以上是关于LeetCode第九题—— Palindrome Number(判断回文数)的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode第九十九题—恢复二叉搜索树—Python实现

第九题

回文数

B君的第九题

稀疏集:编程珠玑第一章第九题

第一章第九题