题目:
Given a string
s, find the longest palindromic substring in
s. You may assume that the maximum length of
s is 1000.
Example:
Input: "babad" Output: "bab" Note: "aba" is also a valid answer.
Example:
Input: "cbbd" Output: "bb"
找到给定字符串的最长连续回文子串。
思路:
本题可用动态规划思路解决,dp[I][j]表示从I到j的子串是否为回文串,若dp[I+1][j-1]==true且s[i]==s[j]时我们就可以说dp[I][j] == true。
代码:
class Solution {
public:
string longestPalindrome(string s) {
int n=s.size();
string res;
bool **dp=new bool*[n];
for(int k=0;k<n;k++){
dp[k]=new bool[n];
}
for(int i=n-1;i>=0;i--){
for(int j=i;j<n;j++){
dp[i][j]=s[i]==s[j]&&(j-i<3||dp[i+1][j-1]);
if(dp[i][j]&&(res.empty()||j-i+1>res.size())){
res=s.substr(i,j-i+1);
}
}
}
return res;
}
};