JavaScript之移動端H5生成圖片解決方案講解
阿新 • • 發佈:2021-08-10
題目連結:https://leetcode-cn.com/problems/longest-palindromic-subsequence
題目描述:
給你一個字串 s ,找出其中最長的迴文子序列,並返回該序列的長度。
子序列定義為:不改變剩餘字元順序的情況下,刪除某些字元或者不刪除任何字元形成的一個序列。
示例 1:
輸入:s = "bbbab"
輸出:4
解釋:一個可能的最長迴文子序列為 "bbbb" 。
示例 2:
輸入:s = "cbbd"
輸出:2
解釋:一個可能的最長迴文子序列為 "bb" 。
提示:
1 <= s.length <= 1000
s 僅由小寫英文字母組成
題解:
class Solution { public: int longestPalindromeSubseq(string s) { vector<vector<int>> dp(s.size(), vector<int>(s.size(), 0)); //dp[i] for(int i = 0; i < s.size();i++) dp[i][i] = 1; for(int i = s.size() - 1; i >= 0; i--) { for(int j = i + 1; j < s.size(); j++) { if(s[i] == s[j]) { dp[i][j] = dp[i + 1][j - 1] + 2; }else{ dp[i][j] = max(dp[i + 1][j], dp[i][j - 1]); } } } return dp[0][s.size() - 1]; } };