题解 | #最长回文子串#
最长回文子串
http://www.nowcoder.com/practice/b4525d1d84934cf280439aeecc36f4af
状态传递要保证之前的状态已经判断过
可以想象成固定右端点从左边收缩,来保证每次状态判断都是从最小区间开始的
public int getLongestPalindrome(String s, int len) {// 特殊用例判断 if (len < 2) { return len; } boolean[][] dp = new boolean[len][len]; int max = 1; for (int i = 0; i < len; i++) { dp[i][i]=true; } //回文算法状态是先列后行,先左后右 for (int r = 1; r <len ; r++) { for (int l = 0; l < r; l++) { if(s.charAt(l)==s.charAt(r)){ if(r-l<3){ dp[l][r]=true; }else { dp[l][r]=dp[l+1][r-1]; } if(dp[l][r]){ max=Math.max(max,r-l+1); } } } } return max; }