Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic substring.
动态规划 时间:O(n^2) 空间: O(n^2)
public class Solution { public String longestPalindrome(String s) { int begin = 0; int maxLength = 1; boolean table[][] = new boolean [s.length()][s.length()]; for(int i = 0;i <s.length();i++){ table [i][i] = true; } for(int i = 0;i<s.length()-1;i++){ if(s.charAt(i)==s.charAt(i+1)){ table[i][i+1] = true; begin = i; maxLength = 2; } } for(int len = 3;len <= s.length();len++){ for(int i = 0;i<s.length()-len+1;i++){ int j= i+len-1; if(s.charAt(i)==s.charAt(j)&&table[i+1][j-1]){ table[i][j] = true; begin = i; maxLength = len; } } } return s.substring(begin, begin+maxLength); } }