class Solution {
public String longestPalindrome(String str) {
char [] s=new char[1010];
int [][] dp=new int[1010][1010];
int ans=0,lpart=0,rpart=0;
s=str.toCharArray();
for(int i=0;i<str.length();i++)
{
dp[i][i]=1;
if(i<str.length()-1)
{
if(s[i]==s[i+1])
{
dp[i][i+1]=1;
ans=2;
lpart = i;
rpart=i+1;
}
}
}
for(int L=3;L<=str.length();L++)
{
for(int i=0;i+L-1<str.length();i++)
{
int j=L+i-1;
if(s[i]==s[j]&&dp[i+1][j-1]==1)
{
dp[i][j]=1;
ans=L;
lpart=i;
rpart=j;
}
}
}
if(rpart<str.length())
return str.substring(lpart, rpart+1);
else
return str.substring(lpart);
}
}