publicclassSolution{publicStringlongestPalindrome(String s){int n = s.length();boolean[][] dp =newboolean[n][n];int maxLen =1;int start =0;for(int i =0; i < n; i++) dp[i][i]=true;for(int i =0; i < n -1; i++){if(s.charAt(i)== s.charAt(i +1)){dp[i][i +1]=true;maxLen =2;start = i;}}for(int len =3; len <= n; len++){for(int i =0; i <= n - len; i++){int j = i + len -1;if(s.charAt(i)== s.charAt(j)&& dp[i +1][j -1]){dp[i][j]=true;maxLen = len;start = i;}}}return s.substring(start, start + maxLen);}}