首页 > 代码库 > LeetCode 009 Palindrome Number
LeetCode 009 Palindrome Number
【题目】
Determine whether an integer is a palindrome. Do this without extra space.
【题意】
题意判断一个整数是否是回文数
注意一下几点:
1. 不能用额外的空间
2. 负数不是回文数
【思路1】
依次比较首位值,需要注意处理类似1002001这样的数,当比较完首位值之后余下的数变成200, 2之前的两个0会自动清除。【代码】
class Solution { public: int _size(int x){ int size = 0; int tx = x; while(tx){ tx /= 10; size++; } return size; } bool isPalindrome(int x) { if(x<0)return false; else if(x>=0 && x<=9)return true; else{ int size = _size(x); int head = x/(int)pow(10,size-1); int tail = x%10; if(head != tail){ return false; } x = x%(int)pow(10,size-1); x = x/10; int newsize = _size(x); if(size-newsize > 2) if(x%(int)pow(10, size-newsize-2) == 0) //考虑数后跟着一串0的情况 x = x/(int)pow(10, size-newsize-2); else return false; return isPalindrome(x); } } };
【思路2】
先生成原数的reverse Number, 然后跟原数比较【代码】
class Solution { public: bool isPalindrome(int x) { long long reverseX=0; if(x<0)return false; int xcopy=x; while(xcopy){ //将整数倒置 reverseX=reverseX*10+xcopy%10; xcopy/=10; } if(reverseX>INT_MAX)return false; //判断倒置后的结果是否越界 if(x==(int)reverseX)return true; //判断倒置结果和原数是否相等 return false; } };
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。