最近遇到一个比较经典的问题,是给出一个字符串,判断字符串中最长对称字串的长度。
自己琢磨了一下,写了个例子,用来供大家参考,还请指正优化
下面是代码
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.取字符串的子串,然后逐个判断字串是否是对称的,取出最长的对称字串