回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
这个思路还是很简单的。比如12321
比较最高位和最低位。然后去掉最高位和最低位。
1和1比较,2和2比较。
注意点:比如1221找到最高位
//比如大于两位数的x,而且这次我假设123123
//判断
int x=123123;
int div=1;
//如果x是个位数,那就不要处理了
while(x/div>=10){
div*=10;
}
//上面就是要找到100000
以下是完整的代码
class Solution {
public boolean isPalindrome(int x) {
//采用最高位和最低为比的思想
//这题最重要的就是算出最高位和最低为。没有任何算法的考察
if(x<0) return false;
int len=1;
//例如1221
int num=x;
while(num/len>=10){
len*=10;
}
//122余2,12于2,1于2
// 10 100 1000
//left:最高位 right:最低为
while(num!=0){
int left=num/len;//得到最高位的数字1221/1000=1
int right=num%10;//找到个位数,也就是right
if(left!=right){
return false;
}
//如果left==right,接着比左边第二个数和右边第二个数
//去掉最高位--->再除10去掉最右边的数
num=(num-left*len)/10;
len/=100;
}
return true;
}
}