/**
* 题目:输入一个字符串,输出该字符串中对称的子字符串的最大长度。
* 比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,
* 因此输出4。
*
* @author Administrator
*
*/
public class Main {
public static void main(String[] args) {
System.out.println(fun("google"));
}
/**
* 判断字符串是否为对称的,首位同时进行比较,时间复杂度为o(n)
* 是从两端向中间靠齐进行的比较;
* @param str
* @return
*/
public static boolean IsSymmetrical(String str){
boolean flag=true;
char[] c=str.toCharArray();
for(int i=0,j=c.length-1;i<=j;i++,j--){
if(c[i]!=c[j]){
flag=false;
break;
}
}
return flag;
}
/**
* 求字符串中最大长度的对称子串,时间复杂度为o(n^3)
* @param str
* @return
*/
public static int fun(String str){
int max=0;
char[] c=str.toCharArray();
boolean flag=true;
for(int i=0;i<c.length-1&&flag;i++){
for(int j=c.length;j>i;j--){
String subString=str.substring(i, j);
if(IsSymmetrical(subString)){
max=subString.length();
flag=false;
break;
}
}
}
return max;
}
/**
*怎么利用o(n^2的解法来解决问题)
*/对称子字符串的最大长度
最新推荐文章于 2025-10-12 14:29:39 发布
6866

被折叠的 条评论
为什么被折叠?



