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% 的用户

Last updated