给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例 1:
输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。
示例 2:
输入: "cbbd"
输出: "bb"
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-palindromic-substring
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
动态规划:
class Solution {
public String longestPalindrome(String s) {
if(s==null||s.length()==0) return "";
char[] chars =s.toCharArray();
int len =chars.length;
boolean[][] dp =new boolean[len][len];
int start =0;
int stop =0;
for(int i=len-1;i>=0;i--){
for (int j=i;j<len;j++){
dp[i][j]=chars[i]==chars[j]&&(j-i<3||dp[i+1][j-1]);
if(dp[i][j]&&(j-i>stop-start)){
start=i;
stop=j;
}
}
}
return s.substring(start,stop+1);
}
}