试题
Determine whether an integer is a palindrome. Do this without extra space.
代码
// 计算出数字的两边的单个数字进行比较
static int x=[](){
std::ios::sync_with_stdio(false);
cin.tie(NULL);
return 0;
}();
class Solution {
public:
bool isPalindrome(int x) {
//if(x==-2147483648 || x<0) return 0;
if(x<0) return 0;
int n = (int)log10(x);
int l,r;
while(n>0){
int l = x%10;
int r = x/(int)pow(10,n);
if(l!=r) return 0;
x /= 10;
n--;
x %= (int)pow(10,n);
n--;
}
return 1;
}
};
//他人,根据回文特点,反向计算出一个数值与之比较
static int x=[](){
std::ios::sync_with_stdio(false);
cin.tie(NULL);
return 0;
}();
class Solution {
public:
bool isPalindrome(int x) {
if(x < 0 || (x%10 == 0 && x != 0))
return false;
int reversed = 0;
while(x > reversed)
{
reversed *= 10;
reversed += x%10;
x /= 10;
}
if(x == reversed || x == reversed/10)
return true;
return false;
}
};