给定一个数字,判断该数字是不是回文数字,也即121 6556均为回文数字
class Solution {
private:
  int num;
public:
  int get_max(int len)
  {
    len--;
    long long nAverage=1;
    while(len--)
    {
      nAverage*=2;
    }
    nAverage--;
    return nAverage;
  }
  int get_min(int len)
  {
    len--;
    long long nAverage=1;
    while(len--)
    {
      nAverage*=2;
    }   
    return 0-nAverage;
  }
  int getLen(int x)
  {
    int nAverage = 1;
    int nCount = 0;
    while (x/nAverage)
    {
      nAverage *= 10;
      nCount++;
    }   
    return nCount;
  }
  int get_pos_num(int pos)
  {
    int i = 0;
    int nAverage = 1;
    while (i != pos)
    {
      nAverage *= 10;
      i++;
    }
    int result = num % (nAverage * 10);
    result = result / nAverage;
    return result;
  }
  bool checkPar(int pos_1, int pos_2)
  {
    int value_1 = get_pos_num(pos_1);
    int value_2 = get_pos_num(pos_2);
    if (value_1 == value_2)
    {
      return true;
    }
    return false;
  }
  bool isPalindrome(int x) {
    if(x>=get_max(sizeof(int)*8))
    {
      return false;
    }
    if(x<=get_min(sizeof(int)*8))
    {
      return false;
    }       
    num = x;
    int len = getLen(x);
    int nCount = 0;
    int index=len/2;
    if (len & 0x1)
    {
      index++;
    }
    //位长为偶数
    for (int i = len - 1; i >= index; i--)
    {
      if (checkPar(i, nCount++))
      {
        continue;
      }
      else
      {
        return false;
      }
    }
    return true;
  }
}; 思路:首先判断数字是否已经超出了int的界限,然后获得该数字的位长,如果是奇数位,则最后一个比较的位置索引为len/2+1,如果是偶数位,则最后一个比较的位置索引就是len/2; 然后从首尾分别同时进发,进行检测,查看是否是回文数字










