//1.常规方法 class Solution { public: int isPalindrome(int x) { int temp=x; if(x<0) return false; int reverse=0; while(x){ //overflow if(reverse>INT_MAX/10)return false; int digit=x%10; x/=10; reverse=reverse*10+digit; } if(reverse==temp)return true; else return false; } }; class Solution { public: int isPalindrome(int x) { //根据题解优化版本 if(x<0 || (x!=0 && x%10==0))return false; //判断回文的时候只判断一半:这样不用处理爆int的操作 int reverseNum=0; while(x>reverseNum){ reverseNum=reverseNum*10+x%10; x/=10; } //如果是偶数的话,x=reverseNum //如果是奇数的话 x=reverseNum/10 return (x==reverseNum)||(x==reverseNum/10); } };