【题目描述】
Determine whether an integer is a palindrome. Do this without extra space.
【思路】
我的思路属于比较笨的,依次比较头尾的数是否一样,值得注意的是要分偶数位和奇数位数来讨论,不过时间还好,76ms。
有几个算是优化的点吧,比如如果x%10==0或x<0就直接false,如果x为0则为true。
【代码】
class Solution {
public:
bool isPalindrome(int x) {
if(!x) return true;
if(x<0||x%10==0) return false;
int n=0;
int tmp=x;
int n1,n2;
bool flag=true;
while(tmp){
n++;
tmp=tmp/10;
}
int div1=pow(10,n-1);
if(n%2==0){
while(div1){
n1=x/div1;
n2=x%10;
x=(x%div1)/10;
div1/=100;
if(n1!=n2) return false;
}
}
else{
while(div1!=1){
n1=x/div1;
n2=x%10;
x=(x%div1)/10;
div1/=100;
if(n1!=n2) return false;
}
}
return true;
}
};