- 思路:
- 确定一个数的第几位是什么数
- 回文数是自然数
- 不能越界
- 从数字的左侧和右侧同时遍历,判断是否相等
实现
- 确定第几位
/*
n:是数字
i:数字的第i位
*/
int getnum(int n,int i)
{
n = n / _Pow_int(10, i - 1);//比如求12345的第3位,这一步求得你= 123
int forward = n / 10;//forward = 12
return n-forward*10;//123-120=3
}- _Pow_int如果不行就用pow即可
- -
判断越界
if ((x>0 && x >= INT_MAX) || x<0)
{
return 0;
}
其余代码
- 确定第几位
bool isPalindrome(int x) {
if ((x>0 && x >= INT_MAX) || x<0)
{
return 0;
}
if (x < 10)
{
return 1;
}
int i = 0;
while (pow(10, i)<=x)
{
i++;
}
for (int j = 1; j <= i; j++)
//for (int j = 1; j <= i / 2 + 1; j++)
{
if (getnum(x, j) != getnum(x, i + 1 - j))
{
return 0;
}
}
return 1;
}