当前位置: 首页 > article >正文

LeetCode516:最长回文子序列

题目链接:516. 最长回文子序列 - 力扣(LeetCode)

代码如下:

class Solution {
public:
    int longestPalindromeSubseq(string s) {
        vector<vector<int>> dp(s.size() + 1, vector<int>(s.size() + 1, 0));
        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];
    }
};

dp的含义:[i, j]最长回文子序列长度

dp的递推公式:

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]);
}

这个递推公式就是先看s[i] == s[j],如果相等的话,那么就dp[i][j] = dp[i + 1][j - 1] + 2,这个也就是把头部和尾部相等的也算上了,如果不相等话,那么再分成两个情况,第一个是让头部的元素往后走,但是尾部的元素不走,也就是dp[i + 1][j],第二种情况就是让尾部往前走,头部元素不走也就是dp[i][j - 1],这两个求一个最大值。

初始化:这个时候我们需要考虑,要是i==j的情况的话怎么办,那么这个时候就需要dp[i][i] = 1即可,要不然有些方向我们推到不出来

遍历顺序:这个时候我们就要画出来一个2*2的表格,通过递推公式这个时候看见这个dp[i - 1][j - 1]是通过由下到上,由左到右推导出来的,那么这个时候我们就需要从后往前遍历了。

返回值:这个返回的就是头部元素的位置和这个字符串末尾元素的位置。


http://www.kler.cn/a/375293.html

相关文章:

  • 影刀RPA实战:识别简单计算验证码
  • 想给视频去背景音乐?简单几步搞定
  • tiktok批量添加达人怎么弄
  • C++20 时间转本地时间,时间转字符串以及字符串转时间的方法
  • Docker 部署 Jaeger
  • Redis 主从同步 总结
  • 从0到1,用Rust轻松制作电子书
  • OpenWrt下安装Mosquitto
  • 在Java中 try catch 会影响性能吗?
  • 轻松部署自己的AI聊天助手LocalGPT并实现无公网IP远程交互
  • 包子凑数(完全背包)
  • 详解进制转换
  • windows@命令行中获取环境变量取值不展开取值(原值)
  • 大数据新视界 -- 大数据大厂都在用的数据目录管理秘籍大揭秘,附海量代码和案例
  • 青少年编程与数学 02-003 Go语言网络编程 03课题、网络编程协议
  • 代码随想录训练营Day09 | 150. 逆波兰表达式求值 - 239. 滑动窗口最大值 - 347.前 K 个高频元素
  • 从服务运营的阶段,进入到了精细化管理和智慧化运营的阶段的明厨亮早年开源了
  • ubuntu知识点滴积累
  • AI-基本概念-向量、矩阵、张量
  • 后台管理系统的通用权限解决方案(七)SpringBoot整合SpringEvent实现操作日志记录(基于注解和切面实现)
  • 学习虚幻C++开发日志——基础案例(持续更新中)
  • SpringSecurity框架(入门)
  • PostgreSQL的奥秘:表结构、TOAST与大对象
  • 网络一些相关术语
  • axios 如何取消请求
  • 移植 AWTK 到 纯血鸿蒙(HarmonyOS NEXT)系统 (0) - 序