9. 回文数
思路:
这道题啊,直接通过取余数反转数再对比即可。
代码:
class Solution {
public:
bool isPalindrome(int x) {
if(x<0) return false;
long a = x;
long res = 0;
while(a!=0){
res = res*10 + a%10;
a = a/10;
}
if(x == res) return true;
return false;
}
};
这里可以优化的,因为是回文数,所以我们只需要反转一半即。这里有两种情况,偶数个位,和奇数个位。
偶数个位只需要取余取位数一半的次数即可,奇数我们需要取一半加中间一位,这时候我们将技术情况得到的反转数除以10即可。
因为最低位为0,肯定不是回文数,因为高位不可能为0,所以我们要排除x%10==0的情况。
代码:
class Solution {
public:
bool isPalindrome(int x) {
if(x<0||(x%10==0&&x!=0)) return false;
long res = 0;
while(x>res){
res = res*10 + x%10;
x = x/10;
}
return x==res||x==res/10;
}
};