[关闭]
@snuffles 2019-04-11T12:35:29.000000Z 字数 389 阅读 1082

L516 最长回文子序列

字符串


解:最长回文子序列,不需要连续。
dp[i][j] =dp[i + 1][j - 1] + 2;if (s[i] == s[j])
dp[i][j] =max(dp[i + 1][j], dp[i][j - 1]);if (s[i] != s[j])

  1. class Solution {
  2. public:
  3. int longestPalindromeSubseq(string s) {
  4. int n = s.size();
  5. vector<vector<int>> dp(n, vector<int>(n));
  6. for(int i=n-1;i>=0;--i){
  7. dp[i][i]=1;
  8. for(int j=i+1;j<n;++j){
  9. if(s[i]==s[j]){
  10. dp[i][j] = dp[i+1][j-1]+2;
  11. }else{
  12. dp[i][j]=max(dp[i+1][j],dp[i][j-1]);
  13. }
  14. }
  15. }
  16. return dp[0][n-1];
  17. }
  18. };
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注