给你一个字符串 s,找到 s 中最长的回文子串。
1 <= s.length <= 1000
s 仅由数字和英文字母(大写和/或小写)组成
import java.lang.reflect.Array;
import java.util.*;
public class Main{
public static String longestPalindrome(String str){
int n=str.length();
if(n==0||n==1)
return str;
int [][] dp =new int[n][n];
int start=0;
int max=1;
for(int i=0;i<n;i++)
{
dp[i][i]=1;
if(i<n-1 && str.toCharArray()[i]==str.toCharArray()[i+1])
{
dp[i][i+1]=1;
start=i;
max=2;
}
}
for(int len=3;len<=n;len++)
{
for(int i=0;i<n-len+1;i++)
{
int j=i+len-1;
if(str.toCharArray()[i] == str.toCharArray()[j] && dp[i+1][j-1]==1)
{
dp[i][j]=1;
start=i;
max=len;
}
}
}
return str.substring(start,start+max);
}
public static void main(String args[]){
Scanner in=new Scanner(System.in);
String str=in.next();
System.out.println(longestPalindrome(str));
}
}