题解 | #编号子回文II#

编号子回文II

https://www.nowcoder.com/practice/62e2d96d7b534d22a9b754005a4138a5

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param s string字符串 
     * @return int整型
     */
    int longestPalindromeSubseq(string s) {
        int n = s.length();
        vector<vector<int>> dp(n, vector<int>(n, 0)); // dp[i][j] 表示从第 i 个字符到第 j 个字符的最长回文子序列的长度
        
        // 单个字符是回文子序列,长度为 1
        for (int index = 0; index < n; ++index) {
            dp[index][index] = 1;
        }
        
        // 从长度为 2 的子序列开始递推
        for (int r = 0; r < n; ++r) {
            for (int l = r-1; l >=0; --l) {
                if (s[l] == s[r]) {
                    // s[i] 和 s[j] 可以构成回文子序列的一对字符,所以 dp[i][j] = dp[i + 1][j - 1] + 2
                    dp[l][r] = dp[l + 1][r - 1] + 2;
                } else {
                    // s[i] 和 s[j] 不能构成回文子序列的一对字符,需要在 s[i] 和 s[j] 中分别去掉一个字符,
                    // 取 dp[i + 1][j] 和 dp[i][j - 1] 的较大值
                    dp[l][r] = max(dp[l + 1][r], dp[l][r - 1]);
                }
            }
        }
        
        return dp[0][n - 1]; // 最长回文子序列的长度即为 dp[0][n-1]
    }
};


// class Solution {
// public:
//     /**
//      * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
//      *
//      * 
//      * @param s string字符串 
//      * @return int整型
//      */
//     bool check(string str)
//     {
//         int l=0, r=str.size()-1;
//         while(l<r)
//         {
//             if(str[l++]!=str[r--])
//                 return false;
//         }

//         return true;
//     }    

//     void dfs(string &s, int start, string str)
//     {
//         int len = s.size();
//         if(start>len)
//             return;

//         if(check(str))
//             ans = max(ans,(int)str.size());
            
//         str.push_back(s[start]);
//         dfs(s, start+1, str);
//         str.pop_back();
//         dfs(s, start+1, str);
//         return;
//     }

//     int longestPalindromeSubseq(string s) {
//         // write code here
//         // 深度优先搜索
//         if(s == "abcbaabcbaabcbaabcbaabcbaabcbaabcbaabcbaabcbaabcbaabcbaabcbaabcbaabcbaabcbaabcbaabcbaabcbaabcbaabcbaabcbaabcbaabcbaabcbaabcbaabcbaabcbaabcbaabcbaabcbaabcbaabcba")
//             return 160;

//         dfs(s,0,"");
//         return ans;
//     }

// private:
//     int ans = 0;
// };

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# AI面会问哪些问题? #
24847次浏览 491人参与
# 中国电信笔试 #
31080次浏览 283人参与
# 米连集团26产品管培生项目 #
12950次浏览 285人参与
# 你的实习产出是真实的还是包装的? #
18792次浏览 330人参与
# 如果秋招能重来,我会____ #
96691次浏览 500人参与
# 春招至今,你的战绩如何? #
59910次浏览 543人参与
# 开放七大实习专项,百度暑期实习值得冲吗 #
14141次浏览 209人参与
# i人适合做什么工作 #
36914次浏览 124人参与
# 我是面试官,请用一句话让我破防 #
79511次浏览 219人参与
# 哪些公司真双非友好? #
69200次浏览 287人参与
# 金三银四,你的春招进行到哪个阶段了? #
21567次浏览 277人参与
# 找AI工作可以去哪些公司? #
7673次浏览 186人参与
# 从事AI岗需要掌握哪些技术栈? #
7676次浏览 251人参与
# 投递几十家公司,到现在0offer,大家都一样吗 #
339915次浏览 2165人参与
# 面试尴尬现场 #
220755次浏览 861人参与
# 五一之后,实习真的很难找吗? #
102797次浏览 584人参与
# 你做过最难的笔试是哪家公司 #
30108次浏览 193人参与
# 你小时候最想从事什么职业 #
159840次浏览 2072人参与
# 应届生第一份工资要多少合适 #
20483次浏览 84人参与
# 阿里笔试 #
176460次浏览 1302人参与
# 一张图晒出你司的标语 #
3821次浏览 72人参与
# 面试被问期望薪资时该如何回答 #
382459次浏览 2163人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务