LeetCode第九题:
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121
输出: true
示例 2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
解:本题用的是C语言
bool isPalindrome(int x){
if(x<0) //小于零的数字肯定不是回文数字
{
return false;
}
int temp=x,num=0,n=0;
while(temp) //用while循环将整数的位数求出来
{
num++;
temp /= 10;
}
for(int i=0;i<num/2;i++) //求出数字的后面一半
{
if(i==0)
{
n = x % 10;
x /= 10;
}else {
n = (x % 10) + n*10;
x /= 10;
}
}
if(num%2) //判断该数字是否是奇书
{
x /= 10; //如果是就先将中间的一位去掉在判断是否相等
if(x == n)
{
return true;
}else {
return false;
}
}else {
if(x == n) //如果是偶数就可以直接判断
{
return true;
}else {
return false;
}
}
}
解题思路:先求出传入数字是几位数,在就该数字的后面一半反过来,接着判断是否是奇数,如果是先去掉中间的一位,再判断。如果椒偶数就可以直接判断。