给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例 1:
输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。
示例 2:
输入: "cbbd"
输出: "bb"
class Solution {
public String longestPalindrome(String s) {
String ans = "";
char[] str = s.toCharArray();
int n = s.length();
boolean[][] dp = new boolean[n][n];
for(int l=0;l<n;++l)
{
for(int i=0;i+l<n;++i)
{
int j = i+l;
if(l==0){
dp[i][j] = true;
}else if(l==1){
dp[i][j] = (str[i] == str[j]);
}else{
dp[i][j] = (str[i] == str[j] && dp[i+1][j-1]);
}
if(dp[i][j] && l>=ans.length()){
ans = s.substring(i,j+1);
}
}
}
return ans;
}
}
网友评论