LeetCode——009

//题目
9. Palindrome Number My Submissions QuestionEditorial Solution
Total Accepted: 118235 Total Submissions: 375373 Difficulty: Easy
Determine whether an integer is a palindrome. Do this without extra space.

click to show spoilers.

Subscribe to see which companies asked this question

//解题思路:
判断一个数字是否是回文数
1.凡是负数都不是回文数
2.考虑每次取出最高位和最低位进行比较
  首先计算最高位的基数值d,方便取得最高位,而最低位只要应用取余运算即可拿到
  每次循环后去掉最高位x%=d,然后去掉最低位x/=10, d的值也要减少2位数d/100
  在这个过程中一点要注意比如10021,当去掉首尾后x变为2而不是002,所以判断当
  x<10&&d>10时一定不是回文。

//代码如下:
class Solution {
public:
    bool isPalindrome(int x) {

        //思路:每次取出最高位和最低位进行比较

        if(x<0)return false;
        int d=1;
        while(x/d>=10)d*=10;

        while(x){
            //特殊情况考虑
            if( d>10&&x<10)return false;
            //真正的判断
            if(x/d!=x%10)return false;

            x%=d;
            x/=10;
            d/=100;
        }

        return true;

    }
};

你可能感兴趣的:(LeetCode)