今天的每日一碼的題目講的是判斷一個數是不是迴文數,所謂的迴文數就是不論是從左往右讀還是從右往左讀都是一樣的結果,比方說12321。方法有很多,這裡和大家一起分享幾個。 主要可以從兩個方面來解決吧:一個是把輸入看成是一串字元串,然後利用字元串的一些函數來進行處理。個人覺得這類方法可以記一記,在面試的時 ...
今天的每日一碼的題目講的是判斷一個數是不是迴文數,所謂的迴文數就是不論是從左往右讀還是從右往左讀都是一樣的結果,比方說12321。方法有很多,這裡和大家一起分享幾個。
主要可以從兩個方面來解決吧:一個是把輸入看成是一串字元串,然後利用字元串的一些函數來進行處理。個人覺得這類方法可以記一記,在面試的時候也經常會遇到字元串的處理編程。
還有一種是對這個整數進行處理,將最高位與最低位進行比較,這樣一步一步進行下去。
第一種方法:
public class palindromeNumber {
public static void main(String[] args) {
/*
* 從控制台輸入數字 調用isPalindrome()方法判斷 輸出判斷結果
*/
Scanner scan = new Scanner(System.in);
System.out.println("請輸入數字:");
String strNum = scan.next();
// 當作字元串處理
System.out.println(isPalindrome(strNum));
}
public static boolean isPalindrome(String str) {
boolean result = false;
for(int i = 0; i < str.length() / 2; i++) {
// 利用charAt()函數返回指定索引處的字元
if (str.charAt(i) == str.charAt(str.length() - 1 - i)) {
result = true;
} else {
result = false;
}
}
return result;
}
}
本方法最關鍵的點是利用charAt()方法對字元串每一對對應的字元位進行判斷,如果有一對對應位上字元不相等,那麼結果就為false。
第二種方法:
public class palindromeNumber {
public static void main(String[] args) {
/* 輸入數字 字元串反轉並判斷 輸出判斷結果 */
Scanner scan = new Scanner(System.in);
System.out.println("請輸入數字:");
String strNum1 = scan.next();
System.out.println(isPalindrome(strNum1));
}
public static boolean isPalindrome(String strNum) {
boolean result = false;
StringBuilder strNum2 = new StringBuilder(strNum);
strNum2.reverse();//字元串反轉並判斷
for (int i = 0; i < strNum.length() / 2; i++) {
if (strNum.charAt(i) != strNum2.charAt(i)) {
result = false;
} else {
result = true; } }
return result;
}}
第二種方法與第一種基本上是一樣的,只不過這裡還利用了字元串的reverse()方法,對於字元串的知識在公眾號的java基礎中也有深入的剖析。這裡提示一下,String類是不可變的,而StringBuilder是可變字元序列。更多的記得查詢資料哦!
第三種方法:
public class palindromeNumber {
public static void main(String[] args) {
/*
* 從控制台輸入數字 調用isPalindrome()方法判斷 輸出判斷結果
*/
Scanner scan = new Scanner(System.in);
System.out.println("請輸入數字: ");
int num = scan.nextInt();
System.out.println(
isPalindrome(num));
}
public static boolean isPalindrome(int num) {
//將整數轉換成字元串,並反轉作比較
return String.valueOf(num).equals(new StringBuffer(num + "").reverse().toString());
}
}
本方法與第二種方法原理相同,只不過編程實現不同。可見編程魅力所在,代碼簡潔。但並不是所有簡潔的代碼都是最有效的,要理解其中的原理深入分析。
第四種方法:
public class palindromeNumber {
public static void main(String[] args) {
/*
* 從控制台輸入數字 調用isPalindrome() 方法判斷 輸出判斷結果
*/
int num;
Scanner scan = new Scanner(System.in);
System.out.println("請輸入數字: ");
num = scan.nextInt();
System.out.println(isPalindrome(num));
}
public static boolean isPalindrome(int num) {
boolean result = false;
int[] arr = new int[10];
int i = 0;
// 將數字的每一位輸入數組中
while (num > 0) {
arr[i] = num % 10;
num /= 10;
i++;
}
// 利用數組判斷是否是迴文數
for (int j = 0; j < i / 2; j++) {
if (arr[j] != arr[i - 1 - j]) {
result = false;
} else {
result = true;
}
}
return result;
}
}
該方法將整數取餘數,分別把每一位存入數組中,再將數組每一對應位上數值進行比較判斷,最後得出結果。
當然不僅僅可以判斷數字哦,還可以試一試字元串是不是迴文,比方說“你是我是你”。大家可以打開電腦,試著編一編代碼哦!!!微信搜索公眾號油墨山,即可獲取更多資訊哦!!!