给你一个整数 x
,如果 x
是一个回文整数,返回 true
;否则,返回 false
。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
bool isPalindrome(int x)
{
int str[32] = { 0 };
int i = 0;
if (x < 0)
{
i = 1;
int dight = x % 10;
str[0] = '-';
while (x != 0)
{
str[i] = dight;
x = x / 10;
i++;
dight = x % 10;
}
}
else if(x>0)
{
int dight = x % 10;
while (x != 0)
{
str[i] = dight;
x = x / 10;
i++;
dight = x % 10;
}
}
else
return true;
int* p = &str[0];
int* q = &str[i - 1];
int* rear = q;
while (q != str && p != rear)
{
if (*p++ == *q--)
;
else
return false;
}
return true;
}
这个题目很简单,就是判断一个数字正着和反着的是否一样,我们可以把数字放到一个数组里面,进行翻转,然后用两个指针一个从头,一个从尾开始遍历,只要遍历过程中两个指针指向的数字不一样就返回false,如果可以完成遍历,就返回true,这里我遍历了整数组,没有进行优化,其实只要两个指针相等的时候,就两个指针走到数组中间时就可以完成判断了。