Determine whether an integer is a palindrome. Do this without extra space.
题目解释:判断一个数是否为回文数,不能使用额外的空间
注意:
1.负数不能是回文数
2.如果转化为字符串进行处理就利用了额外的空间(If you are thinking of converting the integer to string, note the restriction of using extra space.)
利用字符串处理(通过但不正确)
public boolean isPalindrome(int x) {
int i=0,j;
String result = x+"";
char[] mid = result.toCharArray();
j = mid.length-1;
if(mid[0]=='-')
return false;
while(i<j){
if(mid[i]!=mid[j])
return false;
i++;j--;
}
return true;
}
使用了一个额外的整型变量
public static 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 /= 10;
}
if(x==rev||(x==(rev/10)))
return true;
else return false;
}
x x rev
12321 -> 12 123
2442 -> 24 24
首先尾数是0的要排除掉,只用处理到x的一半即可