1.首先想的是先判断负数和10的倍数,都为false,其次0位true
2.就是判断x的逆序是否一样,利用前面的把数逆序的函数
class Solution {
public:
bool isPalindrome(int x) {
int num=x;
if(x==0)
return true;
else if(x%10==0||x<0)
return false;
else
{
int digit,result=0;
while(x>0)
{
digit=x%10;
if(result > INT_MAX / 10 || (result == INT_MAX / 10 && digit > (INT_MAX % 10))) return 0;
if(result < INT_MIN / 10 || (result == INT_MIN / 10 && digit < (INT_MIN % 10))) return 0;
result=result*10+digit;
x=x/10;
}
if(result==num)
return true;
else
return false;
}
}
};
ps;判断result作为int会发生overflow
1.如果result>INT-MAX/10,则result=result*10+digit会发生溢出
如果result=INT_MAX/10,且digit>7,也就是INT_MAX%10=7,则会发生溢出。