哈喽大家好!好久没更了,今天带来的是一道关于动态规划的问题。
代码如下:
class Solution {
public String longestPalindrome(String s) {
int len = s.length() ;
if(len < 2){
return s ;
}
int begin = 0 ;
boolean[][] p = new boolean[len][len] ;
int maxlen = 1 ;
char[] a = s.toCharArray() ;
for(int l = 2 ; l <= len ; l++ ){
for(int i = 0 ; i < len ; i++ ){
int j = l + i - 1 ;//l = j - i + 1
if( j > len - 1 ){
break ;
}
if(j - i <= 2 & a[i] == a[j]){
p[i][j] = true ;
}
else if(a[i] == a[j]){
p[i][j] = p[i+1][j-1] ;
}
else{
p[i][j] = false ;
}
if(p[i][j] == true && j - i + 1 > maxlen){
maxlen = j - i + 1 ;
begin = i ;
}
}
}
return s.substring(begin, begin + maxlen);
}
}