判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121 输出: true
示例 2:
输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。
进阶:
你能不将整数转为字符串来解决这个问题吗?
bool isPalindrome(int x){
if(x<0)return false;//排除负数
if(x==0)return true;//剔除0
if(x%10==0)return false;//排除末尾有0的数
int n=0;//x的数字位数
int base=1;
while(x/base)
{
n++;
if(n==10)break;
base*=10;
}
int reverse_tmp=x;
for(int i=n;i>n/2;i--)
{
base=1;
for(int j=0;j<i-1;++j)
{
base*=10;
}
if(x/base!=reverse_tmp%10)
{
return false;
}
x=x%base;
reverse_tmp=reverse_tmp/10;
}
return true;
}
执行用时 : 8 ms, 在Palindrome Number的C提交中击败了100.00% 的用户
内存消耗 : 7.1 MB, 在Palindrome Number的C提交中击败了85.81% 的用户