---
# System prepended metadata

title: 0009. Palindrome Number
tags: [Leetcode, Palindrome]

---

# 0009. Palindrome Number
###### tags: `Leetcode` `Palindrome`
link: https://leetcode.com/problems/palindrome-number/
##  思路
最容易想到的就是把integer转换成string，然后做对比，但就会出现奇数位数还是偶数位数要分开讨论的问题，另外还需要把每一位都存起来，相当占空间。同时又因为是一位一位去对比，也要消耗不少时间。
因此这一题选择把数字前后分成两部分，将前面的一部分和经过reverse之后的后面一部分比较。
值得注意的一点是解这道题的时候**因为有特殊情况，如带负号或者末尾是0的input，是直接可以排除掉的，因此为了节省时间，在最前面加了if判断**
##  Code in C++
```
class Solution {
public:
    bool isPalindrome(int x) {
        if(x<0||(x%10==0&&x!=0)){
            return false;
        }
        int reverse_num = 0;
        while(x>reverse_num){
            reverse_num = reverse_num*10+x%10;
            x/=10;
        }
        return x == reverse_num||x==reverse_num/10;
    }
};
```


