题目描述:
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121
输出: true
示例 2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
解法分析:
此题如果我们直接采用将输入转为字符串就太简单了,直接判断字符串是否回文就可以了,但是面试中不会这么简单,因此这里我们要求直接对整数进行操作。
首先我们要排除输入为负数的情况,然后利用取整取余可以得到收尾的数字,进行比较即可,代码如下:
解法一:
bool Palindrome::isNumberPalindrome(int x)
{
if (x < 0) return false;
int div = 1;
while (x /div >= 10)//取位数
{
div *= 10;
}
while (x > 0)
{
int left = x / div;//首位
int right = x % 10;//末位
if (left != right) return false;
x = x % div / 10;
div /= 100;
}
return true;
}
解法二:
因为整数的最高位不能