面試題:迴文數
一次面試時要求在紙上寫出迴文數的程式碼
/**
* 判斷一個整數是否是迴文數,是返回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;
}