问题
这是一个求解回文的题。
分析
- 负数是否是回文?
- 个位数一定是回文,如果是个位数可以直接返回,但是下面代码并未这么做
- 算法的核心思想就是,不停的取出数的最高位和最低位比较,如果相同,掐头去尾再继续比较,如果一直是相等的,那么就是回文
public boolean isPalindrome(int x)
{
//when x is negative,return false
if(x < 0)
{
return false;
}
//len为数的权,这里用len表示。例如,123的len==100,利于计算
int len = 1;
int x1 = x/10;
while(x1 != 0)
{
len *= 10;
x1 /= 10;
}
//key part of algorithm
int left = 0;
int right = 0;
int x2 = x;
while(x2 != 0 )
{
right = x2 % 10;
left = x2/ len;
if(right != left)
{
return false;
}
else
{
x2 %= len;
x2 /= 10;
len /= 100;
}
}
return true;
}