Determine whether an integer is a palindrome. Do this without extra space.
public boolean isPalindrome(int x) {
try {
String[] num = (x + "").split("");
List list = new ArrayList(Arrays.asList(num));
if(x >= 0){
if (list.size() % 2 != 0) {//opp
Collections.reverse(list.subList(list.size() / 2 + 1, list.size()));
return list.subList(0, list.size() / 2).equals(list.subList(list.size() / 2 + 1, list.size()));
} else {
Collections.reverse(list.subList(list.size() / 2, list.size()));
return list.subList(0, list.size() / 2).equals(list.subList(list.size() / 2, list.size()));
}
}else{
if (list.size()-1 % 2 != 0) {//opp
Collections.reverse(list.subList(list.size()-1 / 2 + 1, list.size()));
return list.subList(1, list.size()-1 / 2).equals(list.subList(list.size()-1 / 2 + 1, list.size()));
} else {
Collections.reverse(list.subList(list.size() / 2, list.size()));
return list.subList(1, list.size()-1 / 2).equals(list.subList(list.size()-1 / 2, list.size()));
}
}
} catch (Exception e) {
return false;
}
/*
优质解答
if(x<0 ||(x !=0 && x%10 ==0)){
return false;
}
int reversed = 0;
while(x> reversed){
reversed = reversed * 10 + x%10;
x /= 10;
}
return reversed == x || reversed/10 == x;*/
}