public class Solution {
public static int Reverse(long a){
long temp = 0;
int res = 0;
if(a < 0){
a = Math.abs(a);
while(a != 0){
temp = temp * 10 + (a % 10);
a = a / 10;
}
if(-temp < java.lang.Integer.MIN_VALUE){
return 0;
}
else{
res = -(int)temp;
}
}
else{
while(a != 0){
temp = temp * 10 + (a % 10);
a = a / 10;
}
if(temp > java.lang.Integer.MAX_VALUE){
return 0;
}
else{
res = (int)temp;
}
}
return res;
}
public boolean isPalindrome(int x) {
int temp;
temp = Solution.Reverse(x);//用到[Reverse Integer]的方法将一个整数逆转,如果逆转后相同,则是回文数
if(temp == x && x >= 0){//负数不是回文数
return true;
}
else{
return false;
}
}
}
解法二:
public class Solution {
public boolean isPalindrome(int x){
if(x < 0){
return false;
}
else if(x % 10 == 0 && x != 0){//下面的else判断不了这种情况,单独拿出
return false;
}
else{
int temp = 0;
while(x > temp){//这个循环控制条件只考虑了x的一半的位数,所以不会有溢出
temp = temp * 10 + (x % 10);//后一半越来越多
x = x / 10;//前一半越来越少
}
boolean s1 = (x == temp);//x的位数是偶数
boolean s2 = (x == temp / 10);//x的位数是奇数,走过程,不是(x / 10 == temp)
return s1 || s2;
}
}
}