題目描述:
給定一個字符串 s
,找到 s
中最長的迴文子串。你可以假設 s
的最大長度爲 1000。
示例 1:
輸入: "babad" 輸出: "bab" 注意: "aba" 也是一個有效答案。
示例 2:
輸入: "cbbd" 輸出: "bb"
分析:
動態規劃
代碼:
class Solution {
public String longestPalindrome(String s) {
int length=s.length();
if(length==0)
return "";
boolean[][] dp=new boolean[length][length];
int startIndex=0;
int maxLength=1;
for(int i=0;i<length;i++){
for(int j=0;j<=i;j++){
if(j==i){
dp[j][i]=true;
}else if(j+1==i){
dp[j][i]=(s.charAt(j)==s.charAt(i));
}else{
dp[j][i]=(dp[j+1][i-1]&&s.charAt(j)==s.charAt(i));
}
if(dp[j][i]&&i-j+1>maxLength){
maxLength=i-j+1;
startIndex=j;
}
}
}
return s.substring(startIndex,startIndex+maxLength);
}
}