思路分析:
此题可将整数转化为字符串,通过循环依次将对称位置的两个数字进行比较,若所有对称位置的数字均相同,则可判断其为回文数。
但考虑到进阶(不将整数转化为字符串解决问题),我们用纯数学的解法来完成。
首先,所有的负数均不是回文数,因此我们只需考虑非负数中的回文数判别。
我们将整数x先保存在k中,防止程序运行中x数据的改变导致x数值丢失。
然后利用整数反转将k反转后储存在y中(使用long型防止反转时数字溢出)。
最后将x与y进行比较,若x与y相同,则x是回文数。
代码实现(c++):
class Solution
{
public:
bool isPalindrome(int x)
{
long y=0,k=x;
if(k<0) return 0;
while(k!=0)
{
y=y*10+k%10;
k/=10;
}
if(x==y) return 1;
return 0;
}
};