這是第三道編程題,300分;
輸入爲一串由空格隔開的字符串,空格數量不定,輸出長度最長的迴文字符串,如果最長迴文字符串有多個,則多個一起輸出,之間用一個空格隔開。
實現思路
先找出迴文字符串,再找出迴文字符串中長度最長是多少(假設爲max),最後輸出長度爲max的迴文字符串。
本程序中先新建一個boolean數組和int數組,初始值爲false,0.分別存放是否爲迴文字符串標誌和迴文字符串長度。
import java.util.*;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
while(in.hasNext()){
String string=in.nextLine().trim(); //trim()去掉兩頭的空格。
/*使用分割函數,分割條件是一個或多個空格,“\\s+”爲一個或多個空格的正則表達式。*/
String[] strs=string.split("\\s+");
int[] num=new int[strs.length]; //存放回文字符串長度
boolean[] index=new boolean[strs.length]; //存放是否爲迴文字符串標誌。
for (int i = 0; i < num.length; i++) {
num[i]=0;
index[i]=false;
}
/*下面for循環判斷迴文字符串*/
for (int i = 0; i < strs.length; i++) {
StringBuilder b=new StringBuilder(strs[i]);
if (b.reverse().toString().equals(strs[i])) {
index[i]=true;
num[i]=strs[i].length();
}
}
int max=0;
/*下面for找出最長迴文字符串長度*/
for (int i = 0; i < index.length; i++) {
if (index[i]==true) {
if(num[i]>max)max=num[i];
}
}
StringBuilder b=new StringBuilder("");
/*輸出長度爲max的迴文字符串*/
for (int i = 0; i < num.length; i++) {
if (index[i]==true) {
if (num[i]==max) {
b.append(strs[i]+" ");
}
}
}
/*判斷一下,有可能沒有迴文字符串*/
if (b.length()>0) {
b.deleteCharAt(b.length()-1); //刪除最後一個空格
}
System.out.println(b.toString());
}
}
}
結果