问题描述:
Determine whether an integer is a palindrome. Do this without extra space.
问题思考:
由于不能使用额外的空间:这里我认为它的意思是不能把int转为String那样做。
所以最直接的想法就是说:将数字分解逆序构造一个新的数字,最后判断。但是逆序的容易产生溢出问题,考虑到回文的特殊性,只需要判断一半就行了。比如:1235321,我们判断321构建出来的是不是123就行了。这里注意一下数字的长度是偶数还是奇数的问题。
public boolean isPalindrome(int x) {
if(x<0)
return false;
int length=0;
int temp=x;
while(temp!=0){
length++;
temp=temp/10;
}
//System.out.println("数字的长度是:"+length);
temp=0;
for(int i=0;i<length/2;i++){
temp=temp*10+x%10;
x=x/10;
}
// System.out.println("temp is "+temp);
if(length%2==0){
return temp==x;
}else{
x=x/10;
return temp==x;
}
}