此题,我用方法是笨方法,但都是我自己写的,如果大家觉得我写的还行,请大家给我点个免费的赞吧^ _ ^
1.首先题目要求如图所示:
2.首先我们要排除小于0的负数,还有要排除小于10但大于等于0的整数,因为负数有个负号,如果从右向左读,那它不是个数了,如(-121从右向左读变为121-),小于10的整数不管怎么多都是一样的,所以小于10但大于等于0的整数为回文数:
if(x < 0)
return false;
if (x < 10)
return true;
3.我们再求一个数有多少位数:
int sum = 0;
int n = x;
int f = 0;
int cout = 0;
while (n)
{
cout++;
n /= 10;
}
4.我们再把它们反过来相加:
n = x;
while (n)
{
f = n % 10;
sum += (f * pow(10, (cout - 1)));
cout--;
n /= 10;
}
5.然后让它们再与原数比较:
if (sum == x)
return true;
else
return false;
接下来全部的代码了:
bool isPalindrome(int x) {
if(x < 0)
return false;
if (x < 10)
return true;
int sum = 0;
int n = x;
int f = 0;
int cout = 0;
while (n)
{
cout++;
n /= 10;
}
n = x;
while (n)
{
f = n % 10;
sum += (f * pow(10, (cout - 1)));
cout--;
n /= 10;
}
if (sum == x)
return true;
else
return false;
}