题目描述
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例1
输入: 121 输出: true
示例2
输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例3
输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。
思路
最开始的思路是拆解原数放在一个数组中,判断这个数组中的元素是不是回文,感觉内训开销有点大,在拆解原数的同时组装一个新数,新数是原数的逆序,这个思路参考网友,妙。
实现
bool isPalindrome(int x) {
if (x < 0)
{
return false;
}
if (x < 10)
{
return true;
}
if (x % 10 == 0)
{
return false;
}
int a = x;
long t = 0;
while (x > 0) {
t = t * 10 + x % 10;
x /= 10;
}
if (t == a)
{
return true;
}
return false;
}