官方答案
class Solution {
public:
bool isPalindrome(int x) {
// 排開負(fù)數(shù)和以0結(jié)尾的數(shù)的情況,因?yàn)?結(jié)尾的數(shù)反轉(zhuǎn)后會(huì)缺少一位
if(x<0)
return false;
if((x % 10==0) && x!=0)
return false;
// 翻轉(zhuǎn)后半段,停止條件為后半段數(shù)大于等于前半段
int x2=0;
while(x>x2){
x2 = x2 * 10 + x % 10;
x = x / 10;
}
// 如果長(zhǎng)度是偶數(shù),則兩者相等返回true;如果是奇數(shù)夹姥,中間的數(shù)字可以為任意
return (x == x2) || (x == (x2 / 10));
}
};
思路
1.轉(zhuǎn)換為字符串。
2.考慮回轉(zhuǎn)一半數(shù)字辙诞,注意奇數(shù)情況的特殊性辙售。