给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例 1:
输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。
示例 2:
输入: "cbbd"
输出: "bb"
不管那些花里胡哨的 直接暴力dp
class Solution {
public String longestPalindrome(String s) {
if (s==null || s.length() <1)
return "";
int len = s.length();
String ret = "";
boolean[][] dp = new boolean[len][len];
for(int i =0;i<len;i++)
dp[i][i] = true;
for(int i=len-1;i>=0;i--){
for(int j=i;j<len;j++){
if(s.charAt(i) == s.charAt(j) && (j - i < 2 || dp[i + 1][j - 1])){
dp[i][j] = true;
}
else
dp[i][j]=false;
if(j-i+1 > ret.length() &&dp[i][j]){
ret = s.substring(i,j+1);
}
}
}
return ret;
}
}
网友评论