最近遇到一個比較經典的問題,是給出一個字符串,判斷字符串中最長對稱字串的長度。
自己琢磨了一下,寫了個例子,用來供大家參考,還請指正優化
下面是代碼
1 public class MaxArray { 2 3 public static void main(String[] args) { 4 String str = "google"; 5 System.out.println("==="+MaxSubStr(str)); 6 7 } 8 //判斷對稱的方法 9 public static boolean duichen(String str){ 10 char[] chr = str.toCharArray(); 11 int min = 0; 12 int max = chr.length-1; 13 while(min<max){ 14 if(chr[min++]!=chr[max--]) 15 return false; 16 } 17 return true; 18 } 19 //返回最長對稱數組 20 public static String MaxSubStr(String str){ 21 String substr=""; 22 for (int i = str.length(); i>=2; i--) 23 for(int j = 0;j < i-1;j++) 24 { 25 String temp = str.substring(j, i); 26 if(duichen(temp)&&substr.length()<temp.length()) 27 substr = temp; 28 } 29 return substr; 30 } 31 }
對整個方法進行分析,如下是分析思路
1.首先,是判斷字符串是不是對稱字串的方法。
將字符串轉換成字符數組。比較對稱軸兩端是不是相同,如果有不相同元素,那么就返回false
用了array數組的角標,
if(chr[min++]!=chr[max--]) 兩端位置逐個比較
2.取字符串的子串,然后逐個判斷字串是否是對稱的,取出最長的對稱字串