一次面试时要求在纸上写出回文数的代码
/**
* 判断一个整数是否是回文数,是返回1,否则返回0
*/
public static int isHuiwen(int num){
//1位数都是回文数
if(num<10&&num>=0){
return 1;
}else{
//负数去掉负号再判断
if(num<0){
num = 0-num;
}
int n = getLength(num);
//取整数的左边0-middle位和右边的0-middle位进行对应比较
int middle = n/2;
//左边最高位的值
int num1 = 0;
//右边最低位的值
int num2 = 0;
for(int i=0;i<middle;i++){
//n-i*2位数对应10的最大幂值
int m = getM(n-i*2);
//左边最高位的值
num1 = num/m;
//右边最低位的值
num2 = num%10;
//判断num1和num2是否相等,不相等表明不是回文数,返回0结束
if(num1!=num2){
return 0;
}
//num1和num2相等后,去掉num左边最高位和右边最低位,再继续比较下一位
num = num%m/10;
}
}
return 1;
}
/**
* 数字有多少位
* @param num 数字
* @return
*/
public static int getLength(int num){
int count = 1;
int tmp = num/10;
while(tmp!=0){
count++;
tmp = tmp/10;
}
return count;
}
/**
* 10的n-1次幂
* @param n 位数
* @return
*/
public static int getM(int n){
int tmp =1;
for(int i=0;i<n-1;i++){
tmp*=10;
}
return tmp;
}