---
title: 'LeetCode 9. Palindrome Number'
disqus: hackmd
---
# LeetCode 9. Palindrome Number
## Description
Given an integer x, return true if x is palindrome integer.
An integer is a palindrome when it reads the same backward as forward.
For example, 121 is a palindrome while 123 is not.
## Example
Input: x = 121
Output: true
Explanation: 121 reads as 121 from left to right and from right to left.
## Constraints
-2^31^ <= x <= 2^31^ - 1
## Answer
此題可藉由取餘數將每個數字都抓出,然後再做前後比對,而INT最大就是10位數。
```Cin=
bool isPalindrome(int x) {
if(x < 0){return false;}
int *temp = (int*)malloc(sizeof(int)*10);
int i = 0, cnt = 0;
while(x != 0){
temp[cnt] = x % 10;
x /= 10;
cnt = x == 0 ? cnt : cnt + 1;
}
while(i < cnt){
if(temp[i] != temp[cnt]){
free(temp);
return false;
}
i++;
cnt--;
}
free(temp);
return true;
}
```
另一解法可以取餘數來計算倒著的新數,若兩數相等即return true。記得考慮overflow的情況。
```Cin=
bool isPalindrome(int x){
if(x < 0){return false;}
int opr = x, cmp = 0, tmp = 0;
while(opr){
tmp = opr%10;
if(cmp > (INT_MAX - tmp)/10){return false;}
else{
cmp = cmp * 10 + tmp;
opr /= 10;
}
}
return cmp == x;
}
```
## Link
https://leetcode.com/problems/palindrome-number/
###### tags: `Leetcode`