Determine whether an integer is a palindrome. Do this without extra space.
题意:判断一个整数是否为回文数
class Solution {
public:
bool isPalindrome(int x) {
// if(x==-2147483648)
if (x<0) return false;
long long n = x > 0 ? x : (0 - x);
int cnt = 0;
long long m = n;
while (m){ //计算位数
m = m / 10;
<span style="white-space:pre"> </span>cnt++;
}
if (n < 10)<span style="white-space:pre"> </span>return true; //cout << "yes" << endl;
while (n){
long long a = n / pow(10, cnt - 1); <span style="white-space:pre"> </span>//a代表最高位
long long b = n % 10; <span style="white-space:pre"> </span>//b代表最低位
if (a == b){
n = n % (int)pow(10, cnt - 1) / 10;
cnt-=2;
if (n == 0 && cnt>1) //考虑到8008 这种情况
return true;
if (n < 10 && cnt <= 1) //考虑到818 这种情况
return true;
}
else //cout << "yes" << endl;
return false;
}
}
};