9.Palindrome Number

9.Palindrome Number

难度:Easy

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

示例 1:
输入: 121
输出: true
示例 2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。

进阶: 你能不将整数转为字符串来解决这个问题吗?

不适用字符串,就直接从前后开始判断位置上的数字是否相等,用直接相加求回文数会有溢出错误,所以用减的.

class Solution {
public:
bool isPalindrome(int x) {
if(x<0 || x==10) return false;
if(x<10) return true;
int s=log10(x);
while(s>0){
int f=x/pow(10,s);
int l=x%10;
//cout<< f<<","<<l<<endl;
if (f!=l) return false;
x=(x-f*pow(10,s))/10;
s-=2;
}
return true;
}
};

执行用时 : 80 ms, 在Palindrome Number的C++提交中击败了72.04% 的用户 内存消耗 : 8.4 MB, 在Palindrome Number的C++提交中击败了78.54% 的用户