您的位置:首页 > 其它

对称子字符串的最大长度

2015-06-08 21:18 197 查看
对称子字符串的最大长度

题目:输入一个字符串,输出该字符串中对称的子字符串的最大长度。

比如输入字符串“ google”,由于该字符串里最长的对称子字符串是“ goog”,因此输出 4。

分析:可能很多人都写过判断一个字符串是不是对称的函数,这个题目可以看成是该函数的

加强版。

/**
* 对称子字符串的最大长度
题目:输入一个字符串,输出该字符串中对称的子字符串的最大长度。
比如输入字符串“ google”,由于该字符串里最长的对称子字符串是“ goog”,因此输出 4。
分析:可能很多人都写过判断一个字符串是不是对称的函数,这个题目可以看成是该函数的
加强版。
* @author wycheng
*
*/
public class SymmLongest {
public static int subSolution(String str){
if(null == str){
return 0;
}
if(str.length() == 1){
return 1;
}
int count = 0;
int p =0;
int q=str.length()-1;
while(p<q){
if(str.charAt(p)==str.charAt(q)){
count+=2;
p++;
q--;
}else{
q--;
count=0;
}
}
if(p==q){
++count;
}else{

}
return count;
}

public static int solution(String str){
int maxLen = 0;
int tmpLen = 0;
for(int i=0;i<str.length();i++){
for(int j=str.length();j>=0;j--){
if(i<j){
String strTmp = str.substring(i, j);
tmpLen = subSolution(strTmp);
}
if(tmpLen > maxLen){
maxLen=tmpLen;
}

if(j-i<maxLen){
break;
}
}
}
return maxLen;
}
public static void main(String[] args) {
System.out.println(solution("google"));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: