一,题目概述
一个整数,从左到右与从右到左写法相同,负数无回文数
例子: 123456 false
12321 true
11 true
-11 false
sws false
1w1 false
二,思路
数字的首位为N,则有:N位与个位相同,N-1位与十位相同...以此类推,得到规律。
首先 可将数字转化为字符串,然后按照其位置进行比较 ,关键字 sprintf()
然后 也可以将原整型按位存入一个新的整形,然后将两个整形比较,关键字 / %
最后 也可以使用两个整形 i,j对原整型进行取位操作,然后比较
三,代码
采用第三种方法
bool isPalindrome(int x) {
if(x<0)//负数无回文
{
printf("false");
return false;
}
int i=10;
long long j=10;
while(j<=x)
{
j*=10;
}
j/=10;
while(1)
{
if((x%i)/(i/10)==(x/j)%(10))//进行取位操作,且比较
{
i*=10;
j/=10;
}
else
{
printf("false");
return false;
}
if(j<i)
{
printf("true");
return true;
}
}
}