9. Palindrome Number

Posted yaoyudadudu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了9. 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.

解题思路:

看到Palindrome就首先想到回文的性质也即定义:关于中心对称。

若数字由奇数个数字组成,则关于中心数字对称; 若数字由偶数个数字组成,则关于中间的(虚拟的)轴对称。

想到几种特殊情况:

  1. x = 0 时,x为回文

  2. x < 0 时,x一定不为回文

首先想到的方法是:将x的最低位取出放到新的数字y里,但是这样有一个风险:x反过来的数字y可能会出现溢出。

这时我们应该利用回文的性质,不需要全部反过来,只反一半:

  若x由偶数个数字组成,那么x与y相等则为回文

  若x由奇数个数字组成,根据我们的判定条件:y去掉最后一位与x相等则为回文

代码:

class Solution 
public:
    bool isPalindrome(int x) 
        if(x == 0)
            return true;
        
        if(x % 10 == 0)
            return false;
        
        int y = 0;
        //get the last digit of x and put it into y
        while(x > y)
            y = y*10 + x % 10;
            x /= 10; 
        
        //check in even digits or odd digits.
        return (x == y) || (x == y/10);
    
;

 

以上是关于9. Palindrome Number的主要内容,如果未能解决你的问题,请参考以下文章

9. Palindrome Number

9. Palindrome Number

#Leetcode# 9. Palindrome Number

9. Palindrome Number

9. Palindrome Number

9. Palindrome Number