如果一個字元串去掉除字母和數字之外的所有字元後,正讀和逆讀都一樣,則這個字元串就是一個迴文。例如:“did Anna say as Anna did?”就是迴文。 編程:要求對輸入的字元串測試其是否為迴文。 1 class Palindrome{ 2 3 public static void mai ...
如果一個字元串去掉除字母和數字之外的所有字元後,正讀和逆讀都一樣,則這個字元串就是一個迴文。例如:“did Anna say as Anna did?”就是迴文。
編程:要求對輸入的字元串測試其是否為迴文。
1 class Palindrome{ 2 3 public static void main(String[] args){ 4 5 Scanner sc = new Scanner(System.in); 6 7 System.out.println(“please input a string:”); 8 9 String strInput = sc.nextLine(); 10 11 if(isPalind(strInput)){ 12 13 System.out.println("\""+strInput+"\" "+"是迴文!"); 14 15 }else{ 16 17 System.out.println("\""+strInput+"\" "+"不是迴文!"); 18 19 } 20 21 } 22 23 public static boolean isPalind(String s){ 24 25 String s1 = filter(s); //過濾掉s中字母和數字外的字元 26 27 String s2 = reverse(s1);//將s1串反轉 28 29 retrun s1.equals(s2); 30 31 } 32 33 public static String filter(String s){ 34 35 //將方法補充完整 36 37 38 } 39 40 public static String reverse(String s){ 41 42 //將方法補充完整 43 44 } 45 46 } 47 48View Code
解如下:
1 package zy.pg.ex3; 2 3 import java.util.*; 4 5 public class Experiment_3_Palindrome { 6 7 public static void main(String[] args) { 8 // TODO Auto-generated method stub 9 Scanner sc = new Scanner(System.in); 10 System.out.println("please input a string:"); 11 String strInput = sc.nextLine(); 12 if (isPalind(strInput)) { 13 System.out.println("\"" + strInput + "\" " + "是迴文!"); 14 } else { 15 System.out.println("\"" + strInput + "\" " + "不是迴文!"); 16 } 17 18 } 19 20 private static boolean isPalind(String s) { 21 // TODO Auto-generated method stub 22 String s1 = filter(s); //過濾掉s中字母和數字外的字元 23 String s2 = reverse(s1);//將s1串反轉 24 return s1.equals(s2); 25 26 } 27 public static String filter(String s){ 28 //將方法補充完整 29 StringBuffer f = new StringBuffer(); 30 char[] s1 = s.toCharArray(); 31 int flag = 0; 32 for(int i = 0; i < s1.length; i++) { 33 if((s1[i] <= '9' && s1[i] >= '0') || (s1[i] >= 'a' && s1[i] <= 'z') || (s1[i] >= 'A' && s1[i] <= 'Z')) 34 f.insert(flag++, s1[i]); 35 } 36 String news = new String(f); 37 return news; 38 } 39 public static String reverse(String s){ 40 //將方法補充完整 41 return new StringBuilder(s).reverse().toString(); 42 } 43 }View Code
第一個方法filter是先想到能不能創建一個字元串,然後將篩選下來的字元逐個銜接在字元串後邊,即可得到篩選後的字元串。但是在網上搜到了JAVA竟然有字元串變數這個數據類型,並且有銜接字元的方法。簡直是再好不過了。
聲明格式跟其他數據類型一樣,但是我學到了一個新的聲明類型。
1 String s; 2 String b; 3 StringBuffer sb = new StringBuffer(b); 4 sb.insert(0,s);
這是網上搜來的例子。insert方法的第一個參數為插入位置的起始位置。第二個參數為要插入的字元串,但我在使用中用的是字元,我猜改方法是將字元看作字元串處理的。
並且學到了將字元串常量與字元串變數互轉的方法。上邊代碼表示了字元串常量轉化為字元串變數。相反類似。
這種轉化法我就暫且命名為構造方法轉化法吧。(嘻嘻,可能已經有這個說法了吧,我還沒聽到過)
然後
就是字元串的倒置了。要用到一個方法。
1 public static String reverse(String str){ 2 return new StringBuilder(str).reverse().toString(); 3 }
這也是在網上看到的。