1.題目鏈接
5. 最長回文子串 - 力扣(LeetCode)https://leetcode.cn/problems/longest-palindromic-substring/description/
?
2.題目解析
對于這道題目我們可以使用動態規劃的思路來求解,具體思路是,對于一個長度大于2的子串,如果它是回文串的話,那么將它首尾的兩個字母去除之后,它仍然是個回文串。例如對于“ababa”,將首尾字符串去掉,剩下的還是回文串,那么我們就可以列出下面狀態轉移方程:
當子串長度大于2時
當子串長度等于2時
?
3.代碼如下:
class Solution {
public:string longestPalindrome(string s) {int n=s.size();bool f[n][n];memset(f,false,sizeof f);int maxi=0;string res;for(int l=1;l<=n;l++){for(int i=0;i+l-1<n;i++){int j=i+l-1;if(s[i]==s[j]){if(j-i<3){f[i][j]=true;}else if(f[i+1][j-1])f[i][j]=true;if(f[i][j]&&l>=maxi){maxi=l;res=s.substr(i,l);}}}}return res;}
};