难度:3
值得注意的地方:输入为1000110001,每次删掉最高位和最低位时bit/=100而不是bit/=10,求一个数的最高位的方式也值得注意一下
题意:输入一个int判断是否为回文,不允许转化为字符串进行判断
解法:每次获得数的最高位和最低位判断,快速获得最高位的的方法见代码
class Solution
{
public:
int HighestBit(int x)//4312返回1000
{
int bit=1;
while(x/100000000) {x/=100000000;bit*=100000000;}
while(x/10000) {x/=10000;bit*=10000;}
while(x/100) {x/=100;bit*=100;}
while(x/10) {x/=10;bit*=10;}
return bit;
}
bool isPalindrome(int x)
{
if(x < 0 )
{
return false;
}
int bit=HighestBit(x);
while(x>=10)
{
int high=x/bit;
int low=x%10;
if(high!=low) return false;
x-=high*bit;
x-=low;x/=10;
bit=bit/100;
}
return true;
}
};