您的位置:首页 > 其它

[leedcode 5]Longest Palindromic Substring

2015-07-04 21:40 369 查看
public class Solution {
public String longestPalindrome(String s) {
//本题是动态规划思想,构造一个数组pal[i][j],表示从i到j是否为一个回文,
//pal[i][j]=true;if i=j;
//pal[i][j]=true 当  s[i]==s[j]并且j-i=1;
//pal[i][j]=true 当  j>i+1,s[i]==s[j]并且pal[i+1][j-1]=true;
int start=0;
int end=0;
int maxLen=0;
int len=s.length();
boolean [][] pal=new boolean[len][len];
for(int i=0;i<len;i++){
for(int j=0;j<len;j++){
pal[i][j]=false;
}
}
for(int j=0;j<len;j++){
//pal[j][j]=true;
for(int i=0;i<=j;i++){

/*if(i==j-1)pal[i][j]=s.charAt(i)==s.charAt(j);
if(i<j-1){
if(s.charAt(i)==s.charAt(j)&&pal[i+1][j-1])
pal[i][j]=true;
}*/
pal[i][j]=(s.charAt(i)==s.charAt(j)&&((j-i<2)||pal[i+1][j-1]));//次判断特别简介,利用了&&和||短路规则

if(pal[i][j]&&maxLen<j-i+1){
maxLen=j-i+1;
start=i;
end=j;
}

}
}

return s.substring(start,end+1);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: