# 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.

Coud you solve it without converting the integer to a string?

## 代码

class Solution {
public boolean isPalindrome(int x) {
int reverse=0;
int xyuan=x;
while(x!=0){
reverse=reverse*10+x%10;
x=x/10;
}
return (Math.abs(reverse)-xyuan==0);
}
}

## 学习别人的代码

compare half of the digits in x, so don't need to deal with overflow.

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);
}
emmmmmm...好像差不多吼~不过因为他的判断，想法就比我写的多了，他的代码不用考虑溢出问题。

• 广告
• 抄袭
• 版权
• 政治
• 色情
• 无意义
• 其他

120