Determine whether an integer is a palindrome. Do this without extra space.
题意判断一个整数是否是回文数
注意一下几点:
1. 不能用额外的空间
2. 负数不是回文数
class Solution {
public:
int _size(int x){
int size = 0;
int tx = x;
while(tx){
tx /= 10;
size++;
}
return size;
}
bool isPalindrome(int x) {
if(x<0)return false;
else if(x>=0 && x<=9)return true;
else{
int size = _size(x);
int head = x/(int)pow(10,size-1);
int tail = x%10;
if(head != tail){
return false;
}
x = x%(int)pow(10,size-1);
x = x/10;
int newsize = _size(x);
if(size-newsize > 2)
if(x%(int)pow(10, size-newsize-2) == 0) //考虑数后跟着一串0的情况
x = x/(int)pow(10, size-newsize-2);
else
return false;
return isPalindrome(x);
}
}
};
class Solution {
public:
bool isPalindrome(int x) {
long long reverseX=0;
if(x<0)return false;
int xcopy=x;
while(xcopy){ //将整数倒置
reverseX=reverseX*10+xcopy%10;
xcopy/=10;
}
if(reverseX>INT_MAX)return false; //判断倒置后的结果是否越界
if(x==(int)reverseX)return true; //判断倒置结果和原数是否相等
return false;
}
};LeetCode 009 Palindrome Number,布布扣,bubuko.com
LeetCode 009 Palindrome Number
原文地址:http://blog.csdn.net/harryhuang1990/article/details/25793079