華爲2017年大牛機試題—最長迴文字符串

這是第三道編程題,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());  
        }  
     }
 }

結果
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章