Palindrome Number
题意:判断一个int是不是回文的,注意认为负数都不是回文的。不可以使用额外的空间。
解法:对于负数,直接false,0的话,true,小于10的正数,直接true。
接下来通过不停的/10,得到数的位数,每次把数的最高位和最低位截取出来,判断一下。
public class Solution143 {
publicboolean isPalindrome(int x) {
if (x==Integer.MIN_VALUE){
return false;
}
if (x==0){
return true;
}
if (x<0){
return false;
}
if (x<10){
return true;
}
int temp=x;
int length=1;
while(temp>=10){
temp=temp /10;
length++;
}
temp=x;
for (int i=1;i<=length/2;i++){
inthigh=temp/temPow(length-i*2+1);
int low=temp % 10;
temp=temp %temPow(length-i*2+1);
temp=temp /10;
if (high!=low){
return false;
}
}
return true;
}
privateint temPow(int x) {
if(x==0){
return1;
}
if(x==1){
return10;
}
intans=10;
for(int i=2;i<=x;i++){
ans=ans*10;
}
returnans;
}
}