Palindrome Number(求一个数是否是回文整数)

来源:互联网 发布:淘宝手机怎么上传宝贝 编辑:程序博客网 时间:2024/06/02 03:12

原题地址:https://leetcode.com/problems/palindrome-number/

原题题意:Determine whether an integer is a palindrome. Do this without extra space.

解析:此题可以借用前面的题目:求回文串  的思路

将一个int 转化为string,进而就变成了求回文串的 题目。

class Solution {public:    bool isPalindrome(int x) {        if(x<0) return false;        string s;        while(x){            s.push_back(x%10);            x/=10;        }        int len = s.length();        int i,j;        for(i = 0,j = len-1;i<=j;++i,--j){            if(s[i]!=s[j]){                return false;            }        }        return true;    }};

2.但是此处不符合题意,题目中说明:不能使用额外的空间。那么我们就举个例子来找找思路

比如:   13431                      1331

我们发现   不管从左往右还是从右往左读都是一样的

因此我们可以求出该数的位数div,借用位数直接取出最高位和最低位进行比对。

class Solution {public:    bool isPalindrome(int x) {          if (x < 0) return false;            int div = 1;            while (x / div >= 10) {              div *= 10;  //div表示位数          }                    while (x != 0) {              int l = x / div;              int r = x % 10;              if (l != r) return false;              x = (x % div) / 10;//关键步骤    13431===> 343               div /= 100;            }            return true;      }};


0 0